my %seeking = ( $switchfqdn => { regex => qr/^fc.*?$hba_wwn/ }, ... ); for my $filename ( keys %seeking ) { open my $in, '<', $filename or do { warn "$filename: $!\n"; next; }; while (<$in>) { if ( /$seeking{$filename}{regex}/ ) { $seeking{$filename}{found} = $_; last; } } if ( $seeking{$filename}{found} ) { print "found in $filename: $seeking{$filename}{found}"; else { warn "no matches in $filename for $seeking{$filename}{regex}\n"; } }