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


in reply to Password (pseudo)casual

Your generator cannot generate a password with the letters a, b or c due to the +3 when selecting the random letter. See rand, which already returns a number in the range from 0..$len.

The variable $len is named wrong - it has the last index of @lett, not the number of elements in the array. This means that your password generator would never output the last element from @lett if it weren't for the + 3 from the previous step. I would use:

$len = @lett;

... which assigns to $len the number of elements in @lett.

Other than that, using double quotes in a simple assignment is weird unless you have a special reason to do so - and if you are starting with Perl just now, those special reasons ("stringification") are still far away. So, no assignment should be of the form

$foo = "$bar";

and always of the form

$foo = $bar;

Replies are listed 'Best First'.
Re^2: Password (pseudo)casual
by cisco88 (Beadle) on Jan 23, 2013 at 15:24 UTC
    Thanks.
    The use of "$.." comes from the bash programming.
    Thinking about what you said made me realize that, indeed, the +3 is more damage than else.
    -- Luca Francesca <luca.francesca@ciscoland.eu> SysAdmin/Integrator @ Vodafone Italy & Ntt Data