-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Gary,
Look up the rand and srand functions in the perl man pages/help files. I'll
answer here,
anyhow, for the benefit of anyone else trying to do something similar..
For your purposes, creating unique files, I would not rely on random number (at
least not
random numbers alone), since there is a chance you can generate the same random
number in two or more different executions of the script, and if you're only
making
temporary files, you may end up with a directory cluttered with thousands of
randomly
named files (what if your script errors and exits before deleting the files,
etc?).
What I would suggest is using a filename pattern, such as <PID>-<YYYYMMDD-
HHMMSS>-<RRRR>, where PID is the scripts PID (available to all perl programs as
the '$$'
special variable), the YYYY..MMSS is the date and time stamps (as text), and if
needed,
RRRR is a random number to help increase the (already high) likelyhood of
uniqueness. By
doing this, you could also periodically call a cleanup script that would scan
for files with
PID's no longer being used, dates/times too old, etc, and delete them.
In code, this would look something like this (the localtime code is right out
of the man
page/help file ;-)):
sub unique_filename {
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900; # Fix the encoded year
$mon += 1; # Fix the zero-based month
my $randval = rand(10000); # rand(10000) gives random #'s between 0 and
9999,
inclusive.
return sprintf("%5.5u-%4.4u%2.2u%2.2u-%2.2u%2.2u%2.2u-%4.4u",
$$,
$year, $mon, $mday,
$hour, $min, $sec,
$randval
);
}
If you're not familiar with sprintf, look it up in the man pages/help files. In
summary, the %
indicates the start of a variable to output, the x.y, where x and y are
numbers, means to
output output up to x digits, and pad up to y leading zero digits. The final u
means to expect
an unsigned integer value to print (many examples use d instead of u, which in
this case,
amounts to the same thing). (If that's confusing, either use it as-is, or look
up the sprintf and
examples in the man pages/help files ;-))
Regards,
C.
On 30 Jan 2008 at 15:54, Gary Yang wrote:
> Hi,
>
> I need to get a random number whenever the perl script is called. Each
> time the random number I got shouldbe different. I use that number to
> name generated files, i.e. I want theperl script to generate different
> file nameswhenever it is called. Can someone tell me how to get the
> different random number whenever the perl script is called?
>
> I greatly appreciate your help.
>
>
> Gary
>
>
>
> Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try
> it now.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
iD8DBQFHogZCxHjl0yp1r80RAoZUAJ4r1AUDOjEDVcgI/G4biPrlyiAS5wCfdnL3
ER8Ouck+M/k35OvZUdSO8Ag=
=6C4J
-----END PGP SIGNATURE-----
_______________________________________________
Perl-Unix-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs