Re: [MacPerl] Find & Replace within the files of a folder tree recursively

[email protected] (Bart Lateur) Fri, 25 Mar 2005 12:28:33 +0100
Newsgroups perl.macperl
Organization MediaMind
Message-ID <[email protected]>
On Fri, 25 Mar 2005 11:45:04 +0100, Detlef Lindenthal wrote:

>##   Type alle the names and paths of the files within a folder tree:
>use File::Find;
>@ARGV = qw(.) unless @ARGV;
>find sub {  print $File::Find::name, -d && '/', "\n" }, @ARGV;

You'd better replace that slash with a colon, on a Mac.


>Now again my question:
>Can someone add some lines, so I can do search-and-replace within each file?

You need a callback sub like this (anonymous) one:

	use File::Find; use Cwd;
	find sub {
	    if(-f and /\.pl$/ and open my $fh, $_) {
	        local($_, $.);
	        while(<$fh>) {
	            chomp;
	            print "$File::Find::name ($.): $_\n" if /foo/;
	        }
	    }
	}, cwd;

BTW cwd() is just a way to get a platform independent definition of "."
which also produces a proper absolute file path.

-- 
	Bart.