use Acme::Alias bless => [qw(curse damn)]; my $string = "foo"; my $obj = curse \$string, 'CursedString'; my $obj2 = damn \$string, 'DamnedString'; #### package Acme::Alias; use Filter::Simple; use strict; use warnings; our $VERSION = '0.01'; our %Symbols = (); sub import() { shift; my %all = @_; for (keys %all){ if ( ref($all{$_}) eq 'ARRAY'){ $Symbols{$_} = join q(|), @{$all{$_}}; } else { $Symbols{$_} = $all{$_} } } } FILTER_ONLY code => sub { while (my ($key,$val) = each %Symbols){ s/$val/$key/gs; } }; 1;