for my $line (@lines) { for my $pattern (keys(%patterns)) { if (my @params = ($line =~ $pattern)) { my $func = $patterns{$pattern}; if (defined($func)) { $func->(@params); } } } }