use strict; use warnings; sub openfile { my ($file_obj) = @_; open(FH,$file_obj); my @list = <FH>; return @list; } sub file_list { my @file_list = glob "*.txt"; return @file_list; } sub reg { my (@line,$fname) = @_; my $text; foreach my $i(@line){ if($i =~ /csv2/){ $text.= $i."\n"; } } open(OUT,">$fname.txt"); print OUT $text; } my @file_allist = file_list(); foreach my $i(@file_allist){ my @list = openfile($i); reg(@list,$i); }