http://www.perlmonks.org?node_id=1024391


in reply to Re: change [A-Z] to U, [a-z] to L with one regex?
in thread change [A-Z] to U, [a-z] to L with one regex?

#$r =~ tr/[A-Z][a-z]/UUUUUUUUUUUUUUUUUUUUUUUUUULLLLLLLLLLLLLLLLLLLLLLL +LLL/; eval( '$r =~ tr/[A-Z][a-z]/'.('U' x 26).('L' x 26).'/' );

[A-Z] is 28 characters, not 26, so your expression is wrong.

This will work:

$r =~ tr/A-Za-z/UUUUUUUUUUUUUUUUUUUUUUUUUUL/;

Replies are listed 'Best First'.
Re^3: change [A-Z] to U, [a-z] to L with one regex?
by BrowserUk (Patriarch) on Mar 19, 2013 at 23:47 UTC
    A-Z is 28 characters, not 26,

    Since when? (Did unicrap fuck that up n'all?)


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

      You have the characters [ and ] and the letters A through Z which is 28 characters.

Re^3: change [A-Z] to U, [a-z] to L with one regex?
by hdb (Monsignor) on Mar 20, 2013 at 08:27 UTC
    Thanks for your comment. I did not realize that in tr you would not need [] and that they would be treated as characters in their own right. And indeed in my script a "Z" would be translated into "L". W/o the brackets it would work. I should read the manuals more often/carefully.
    For every complex problem there is an answer that is clear, simple, and wrong. H. L. Mencken