#usr/bin.perl -w use strict; my $file1=<) { my ($file_name) = $_ =~ (/^\s*(test\d\.tst)\s*/); $seenFile1{$file_name} = 1 if $file_name; } close FILE1; my @common; while () { my ($file_name) = $_ =~ (/^\s*(test\d\.tst)\s*/); #as OP wants, save common names for other uses.... # push @common, $file_name if $seenFile1{$file_name}; } #one use is sort # foreach (sort {my ($Anum) = $a =~ /(\d+)/; my ($Bnum) = $b =~ /(\d+)/; $Anum <=> $Bnum }@common ) { print "$_\n"; } __END__ test1.tst test3.tst