in reply to Using a hash to globally s/// a string
You'll probably want to use the tr/abc/xyz/ function. (Which will refer you to perldoc perlop, specifically the Quote and Quote-like operators.) The scheme you have will likely cause you a bit of grief:
$ cat cryppled.pl #!/usr/bin/perl use strict; use warnings; my %map = ( a=>'b', b=>'d', c=>'g', d=>'c', e=>'f', f=>'a' ); my $orig = 'abcdefgh'; print "orig: '$orig'\n"; my $new1 = $orig; for my $k (keys %map) { $new1 =~ s/$map{$k}/$k/g; } print "new1: '$new1'\n"; my $new2 = $orig; for my $k (reverse keys %map) { $new2 =~ s/$map{$k}/$k/g; } print "new2: '$new2'\n"; my $new3 = $orig; $new3 =~ tr/abcdef/bdgcfa/; print "new3: '$new3'\n"; $ perl crypplyd.pl orig: 'abcdefgh' new1: 'ffdbeedh' new2: 'eaaaeech' new3: 'bdgcfagh'
...roboticus
Update: The original documentation link was a bit brief, so I added the second one.
When your only tool is a hammer, all problems look like your thumb.
|
|---|