use File::Find; @ARGV = ('.') unless @ARGV; #start at . unless given # as command line argument sub ProcessFiles { &CheckAndFixFile($File::Find::name); } find(\&ProcessFiles, @ARGV); # find is recursive sub CheckAndFixFile { my $filename = shift @_; #Put code here to check if $filename meets criteria, and delete line if needed. }