Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Perl (http://www.go4expert.com/forums/perl/)
-   -   Beginner Perl help Please (http://www.go4expert.com/forums/beginner-perl-help-t25473/)

srijithbhandary 8Apr2011 12:31

Beginner Perl help Please
 
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.

sreek 8Apr2011 22:03

Re: Beginner Perl help Please
 
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

pradeep 28Apr2011 19:38

Re: Beginner Perl help Please
 
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



All times are GMT +5.5. The time now is 19:20.