use strict; use warnings; my %file; while() { chomp; if( !/^lab(\d+)_set(\d+)\.txt/ ) { warn "$_ doesn't belong here!"; next; } $file{$1} += $2; } for( keys %file ) { print "lab$_ ", $file{$_} == 3 ? 'matched' : "is missing lab${_}_set" . ( 3 - $file{$_} ) . ".txt", "\n"; } __DATA__ lab1_set1.txt lab1_set2.txt lab2_set1.txt lab2_set2.txt lab3_set2.txt lab100_set1.txt lab100_set2.txt