my @handlers = ( { pattern => qr/.../, callback => sub { ... } }, { pattern => qr/.../, callback => sub { ... } }, { pattern => qr/.../, callback => sub { ... } }, ); for my $line (@lines) { for my $handler (@handlers) { if (my @params = ($line =~ $handler->{$pattern})) { my $func = $handler->{callback}; $func->(@params) if $func; } } }