On 9/7/07, Satya <[EMAIL PROTECTED]> wrote:
snip
> If it is possible to do it using the perl or any other scripting
> language, what would be the approach.
snip

It is possible; the approach is the same as in all languages: use
random numbers to select/build strings that match your needs.  For
instance, lets say I need to generate a CSV file that has five
columns: id, date, user, severity, and message.  Id will be a
sequential number starting at one, the date is just a random date, the
user should be selected from /etc/passwd, the severity is one of low,
med, or high, and message is just a random string between 0 and 50
characters long.

#!/usr/bin/perl

use strict;
use warnings;
use IO::All;

my @passwd = map {(split/:/)[0]} io('/etc/passwd')->getlines;
my @sev = qw<low med high>;

my $recs = shift;
for my $id (1 .. $recs) {
        print join(',',
                $id,
                rand_date(),
                $passwd[int rand @passwd],
                $sev[int rand @sev],
                rand_str()), "\n";
}

#FIXME: this creates invalid dates like 2007-02-30
sub rand_date {
        sprintf "%04d-%02d-%02d",
                2000 + int rand 7,
                1 + int rand 12,
                1 + int rand 31;
}

#FIXME: this assumes the ASCII character set
sub rand_str {
        join '', map { chr 65 + int rand 26 } 0 .. int rand 51;
}

There is also a module on CPAN called yagg* that can generate data
using a grammar.  I haven't used it so I can't really tell you if it
is any good.


* http://search.cpan.org/~dcoppit/yagg/yagg

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


Reply via email to