in reply to efficiently printing to 30 files

I was thinking you could a case statement.
Here's an example from the perlfaq7.

BUT... is there a relationship between the search pattern and the group files?
because then you can make a hash of that relationship like...
my %groupMap = ( 'ABC' => 'groupA.txt', 'DEF' => 'groupB.txt', 'GHI' => 'groupC.txt' # and so on and so on )

then you can check each key in %emp against the keys in %groupMap...

foreach my $n (keys %emp) { my ($pattern,$file); while (($pattern,$file) = each %groupMap) { if ( $emp{$n}{'Org'} =~ /$pattern/ ) { saveEmpToFile($emp{$n}{'Emp'}, $file); } } } sub saveEmpToFile { my $emp = shift; my $file = shift; # note: openning for append open(OUTFILE, ">>$file"); print OUTFILE $emp; close OUTFILE; }

this way- you can just add more mappings to %groupMap without adding more lookup code in your for loop.

HTH