my %key = ( '1'=>'?', '2'=>'/', '3'=>'>', '4'=>'<', '5'=>':', '6'=>';', '7'=>'[', '8'=>']', '9'=>'{', '0'=>'}', '!'=>'p', '@'=>'o', '#'=>'i', '$'=>'d', '%'=>'j', '^'=>'h', '&'=>'g', '*'=>'k', '('=>'5', ')'=>'3', '-'=>'2', '+'=>'9', '='=>'%', '\\'=>'c', '|'=>'1', '~'=>'^' ); #### sub decode { my $char; my $meta; foreach $char (keys %key){ $meta =quotemeta $key{$char}; $$message->{body} =~ s/$meta/$char/gis; } } #### my $char; my $meta; foreach $char (keys %key){ $meta =quotemeta $char; $$message->{body} =~ s/$meta/$key{$char}/gis; }