find (\&process, $folder); sub process { if ($_ =~ /\.9$/) { print "\nProcessing file $File::Find::dir/$_\n"; open FILE, $_ or die "Cannot read $File::Find::name: $!"; local $/= "# input for"; # localise @outlines so we don't accumulate my @outlines = (); while ( my $line = ) { #do something push @outLines, $line; } close FILE; my $out = 'adjusted.learn'; open OUTFILE, ">$out" or die "Cannot write $out: $!"; print OUTFILE @outLines; close OUTFILE; } } exit;