my %mungers = ( foo => sub { $_[0] =~ s/foo/bar/g }, fru => sub { $_[0] =~ s/(fru.*)/uc($1)/e }, ); if( $phase_of_moon > WAXING_GIBBOUS ) { $mungers->{foo}->( $string ); } else { $mungers->{fru}->( $string ); }