in reply to Random string generator

my @chars = ("A".."Z", "a".."z"); my $string; $string .= $chars[rand @chars] for 1..8;
Fill @chars with what ever characters you want to be valid in your string.

Replies are listed 'Best First'.
Re: Re: Random string generator
by ibanix (Hermit) on Feb 06, 2003 at 02:06 UTC
    This is really nifty. Paladin++

    I have to spell this out; perhaps other monks will appreciate the explination. Please feel free to correct me.

    rand @chars takes @chars in scalar context, that is, the length of the array holding our characterset. So rand returns a value somewhere in the array, and that becomes the index for the array lookup.

    I keep forgetting you can do cool things like this by implied scalar or array context.

    Thanks,
    ibanix

    $ echo '$0 & $0 &' > foo; chmod a+x foo; foo;
      Don't forget to add that using a floating point number as an array index, does an implied int on the value. In other words: it truncates towards zero. $a[5.9] is the same array element as $a[5], not $a[6].

      A very explicit version would have been:

      $chars[int rand scalar @chars]
      which does exactly the same thing as
      $chars[rand @chars]
      The net effect is that all array indexes have the same change of being chosen.