my %search, %found; for (qw(pagetitle category)) { $search{$_} = qr/$_.*?"(.*?)"/i; } my ($pt, $pc); while (){ my $line = $_; for (keys %search) { $found{$_} = $1 if !exists $found{$_} and $line =~ $search{$_}; } }