prune prevents recursion.
max_depth(1) also prevents recursion :)
Based on the previous links I might write this which avoids the slurping of both files and filenames :)
#!/usr/bin/perl --
use strict; use warnings;
use File::Find::Rule;
Main( @ARGV );
exit( 0 );
sub Fudge {
use Errno();
join qq/\n/,
"Error @_",
map { " $_" } int( $! ) . q/ / . $!,
int( $^E ) . q/ / . $^E,
grep( { $!{$_} } keys %! ),
q/ /;
}
sub pie(&@) {
my( $cb, $file, $backup ) = @_;
$backup ||= "$file~";
$backup = "$file$backup" if length $file > length $backup;
rename $file, $backup or die Fudge( "backing up q{$file} to q{$bac
+kup}:" );
open my $IN, "<", $backup or die Fudge( "reading q{$backup}:" );
open my $OUT, ">", $file or die Fudge( "writing $file:" );
local $_;
while( defined( $_ = <$IN> ) ) {
$cb->();
print $OUT $_;
}
} ## end sub pie(&@)
#~ pie { s/^\s+// } "myfile.txt";
#~ pie { s/^\s+// } "myfile.txt", ".orig";
#~ pie { s/^\s+// } "myfile.txt", "myfile.txt.bak";
#~ pie { s/^\s+// } @ARGV;
## $ perltidy -csc -csci=10 -cscl="sub : BEGIN END" -otr -opr -ce -nib
+c -i=4 -pt=0 "-nsak=*"
#~ my @files = Path::Class::Rule->new->file->name( qr/^rc\.itm\d+$/ )-
+>max_depth(1)->all( $dir );
#~ my @files = File::Find::Rule->new->file->name( qr/^rc\.itm\d+$/ )->
+max_depth(1)->in( $dir );
#~ my @files = find( file => name => qr/^rc\.itm\d+$/ => max_depth =>
+1 => in => $dir );
#~ for my $file( @files ){
#~ pie {
#~ m/start ux/ and s{^}{#}
#~ } $file;
#~ }
#~ for my $file( @files ){
#~ pie \&uxcomment, $file;
#~ }
#~ for my $file( @files ){
#~ eval { pie \&uxcomment, $file } or warn $@;
#~ }
sub uxcomment { s/^\s+// }
sub Main {
my $dir = \@_;
my $filefinder = find(
file => name => qr/^rc\.itm\d+$/,
max_depth => 1,
start => $dir,
);
while( my $file = $filefinder->match ) {
eval { pie \&uxcomment, $file } or warn $@;
}
} ## end sub Main