Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re^2: secret code generator

by johngg (Abbot)
on Dec 19, 2006 at 10:22 UTC ( #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;



Comment on Re^2: secret code generator
Select or Download Code
Replies are listed 'Best First'.
Re^3: secret code generator
by BrowserUk (Pope) 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{!@#{}[\]&*};' ! @ # { } [ \ ] & * $



      Update: Added one-liners to show backslash behaviour

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (6)
As of 2015-11-29 11:23 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (750 votes), past polls