elsif (/..a regex goes here../) { if(ref($self->{_ref_killed}) eq 'CODE'){ $self->{_ref_killed}->($1,$2,$3) } elsif(ref($self->{_ref_killed}) eq 'ARRAY'){ foreach my $sr (@{$self->{_ref_killed}}){$sr->($1,$2,$3)} } elsif(ref($self->{_ref_default}) eq 'CODE'){ $self->{_ref_default}->($1,$2,$3) } $self->_last_death($2); } #### Without Eval: 0.059999942779541 With Eval: 4.15600001811981 #### $type{killed} = [$regexref,3]; # 3 to pass $1,$2, and $3 #above is not exact and has problems I'm sure. Just for the idea.