Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^2: secret code generator

by johngg (Canon)
on Dec 19, 2006 at 10:22 UTC ( [id://590634]=note: print w/replies, xml ) Need Help??


in reply to Re: secret code generator
in thread secret code generator

A simpler way to populate the @chars array.

my @chars = map {pack q{C}, $_} 0x21 .. 0x7e;

Cheers,

JohnGG

Replies are listed 'Best First'.
Re^3: secret code generator
by BrowserUk (Patriarch) on Dec 19, 2006 at 10:25 UTC

    Simpler still

    my @chars = map chr, 0x21 .. 0x7e;

    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      Blast, I thought it was char and when I couldn't find that in the Camel book I decided I had imagined the function so went for pack instead :(
Re^3: secret code generator
by Hofmator (Curate) on Dec 19, 2006 at 10:28 UTC
    Simpler, yes. Easier to understand, no - unless you use ASCII codes all day long.

    Also, note BrowserUK's solution, your map can be written simply as map chr, 0x21 .. 0x7e;

    Update: BrowserUK noted himself :)

    -- Hofmator

    Code written by Hofmator and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

      Easier to understand? Debateable. I feel that this

      my @chars = ("a".."z", "A".."Z", 0..9 , split //, qq(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~));

      looks a bit messy and it is difficult to see at a glance, or even with a long stare, if you've got them all. In fact, I think tilly will have missed one since qq{...} is going to lose the backslash so q{...} might have been better.

      $ perl -le 'print for split m{}, qq{!@#{}[\]&*};' ! @ # { } [ ] & * $ perl -le 'print for split m{}, q{!@#{}[\]&*};' ! @ # { } [ \ ] & * $

      Cheers,

      JohnGG

      Update: Added one-liners to show backslash behaviour

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://590634]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2024-03-19 02:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found