Beginner Perl help Please

srijithbhandary's Avatar, Join Date: Apr 2011
Newbie Member
Hi I am trying to generate random names using perl script.

First let me post my code
Code:
#!/usr/bin/perl 
my $name; 
my @charset = (('A'..'Z'), ('a'..'z')); 
my $range = $#charset + 1; 
print "Enter the limit\n"; 
$lim = <STDIN>; 
 
until ($lim == 0){ 
for (1..8) { 
   $name .= $charset[int(rand($range))]; 
} 
print "$name\n"; 
$lim = $lim - 1; 
}
So this code first asks the number of names that I want to generate after that it generates the number of names.

My problem is I dont want it to generate the way it is doing now.
here is the output if i give limit as 6

PeTFDyCo
PeTFDyCotpeZftCG
PeTFDyCotpeZftCGCztEldLf
PeTFDyCotpeZftCGCztEldLfdULnsqvx
PeTFDyCotpeZftCGCztEldLfdULnsqvxhYNMboqM
PeTFDyCotpeZftCGCztEldLfdULnsqvxhYNMboqMXIDiwnOw

Here it generates 6 names, but I have two issues here

1) I dont want the previous name to be appended(prefix) to the next name

2) I want all the names to be of same length

Please help me. Thank you.
0
sreek's Avatar, Join Date: Nov 2010
Go4Expert Member
the letters are appended to $name through out the until loop. Thats why you are getting previous name to be appended and length of the name increases.

add $name=""
in the first line of the until loop
0
pradeep's Avatar, Join Date: Apr 2005
Team Leader
Code: Perl
#!/usr/bin/perl
use strict;
use warnings;

my @charset = ( 'A' .. 'Z', 'a' .. 'z'  );
print "Enter the limit : ";
chomp(my $lim = <STDIN>);

while ( $lim-- ) {
    my $name;

    for ( 1 .. 8 ) {
        $name .= $charset[ rand(@charset) ];
    }
    print "$name\n";
}

Output:
Code:
[pradeep@home-dev test]# ./rand.pl
Enter the limit : 6
OKdCOZCg
gKMrjpBf
tCpcSrnZ
ufnBdeEc
UbwHQbzp
eyYkaqKC
shabbir like this