in reply to transliterate on regex

See tr/// and consider
$_ = '1 the cat sat on the mat.'; tr/abcdefghijklmnopqrstuvwxyz0-9/aBCDEFGHIJKLMNOPQRSTUVWXYZ/d; print "$_\n"; $_ = '2 the cit sit on the mit.'; tr/abcdefghijklmnopqrstuvwxyz0-9/ABCDEFGHiJKLMNOPQRSTUVWXYZ/d; print "$_\n"; __END__ THE CaT SaT ON THE MaT. THE CiT SiT ON THE MiT.

Do you get it now?

tr/searchlist0123456789 /REPLACEMENTLIST/d

Replies are listed 'Best First'.
Re^2: transliterate on regex
by ww (Archbishop) on Jun 19, 2013 at 11:47 UTC
    Excellent example; but consider use of a character class (see perlre rather than specifying all 52 lc & uc letters from a to z and the 10 digits from 0 to 9...
    [a-zA-Z0-9]
    C:\>perl -E "my $s='abcdeEFGHI20130619ABC';$s =~ tr/[b-dB-D2-5]/*/;say + $s;" a***eEFGHI*01*0619A**

    update: restating for specificity: 52 uc and lc; 10 digits

    update2: choroba points out that (s)quare brackets are not special in tr///; ie, that my suggestion of a char class is wrong -- something illustrated by this:

    C:\>perl -E "my $s='abcdeEFGHI20130619ABC';$s =~ tr/b-dB-D2-5/*/;say $ +s;" a***eEFGHI*01*0619A**

    Mea Culpa.


    If you didn't program your executable by toggling in binary, it wasn't really programming!

      Try adding [] into $s...
      لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
Re^2: transliterate on regex
by vicearl (Initiate) on Jun 19, 2013 at 05:59 UTC

    Got it - thanks.