Flemming Greve Skovengaard wrote:
> Travis Thornhill wrote:
>> I need to make strings of variable length for testing inputs.
>>   The strings can contain any letter, say 'a', and I need to be able
>> to create the string with
>>   255, 256 or any length.
>>      Is there a quick and easy way to do this with perl?
> 
> This will generate a string of random length between 1 and 256 with random
> letters from a to z.
> I have only tested it lightly, so the best of luck to you.
> 
> 
> use strict;
> use warnings;
> 
> my ($rand_string, $index);

$index should be declared inside the for loop, not at file scope.

> my @letters = qw( a b c d e f g h i j k l m n o p q r s t u v w x y z );

Could be shortened to:

my @letters = 'a' .. 'z';


> my $length = int rand( 255+1 );

Why not just rand( 256 )?


> for (1..$length) {
>     $index = int rand(scalar @letters-1);

You have an off-by-one error.  The letter 'z' will never be picked.


>     $rand_string .= $letters[$index];

Or simply:

      $rand_string .= $letters[ rand @letters ];


> }
> 
> print $rand_string, "\n";

You could write that on one line as:

my $rand_string = join '', map $letters[ rand @letters ], 1 .. $length;




John
-- 
Perl isn't a toolbox, but a small machine shop where you can special-order
certain sorts of tools at low cost and in short order.       -- Larry Wall

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to