----- Original Message -----
From: "Jim Gibson" <jimsgib...@gmail.com>
To: "Perl List" <beginners@perl.org>
Sent: Wednesday, February 09, 2011 6:15 PM
Subject: Re: Randomizing a 24hr time period
On 2/9/11 Wed Feb 9, 2011 2:30 PM, "Mike Blezien"
<mick...@frontiernet.net> scribbled:
----- Original Message -----
From: "Jim Gibson" <jimsgib...@gmail.com>
To: "Perl List" <beginners@perl.org>
Sent: Wednesday, February 09, 2011 4:04 PM
Subject: Re: Randomizing a 24hr time period
On 2/9/11 Wed Feb 9, 2011 1:05 PM, "Mike Blezien"
<mick...@frontiernet.net> scribbled:
----- Original Message -----
From: "Paul Johnson" <p...@pjcj.net>
Paul,
quick question. my perl is a bit rusty, been away from it for awhile. But
this
line in your coding:
my $n; printf "%2d. %02d:%02d\n", ++$n, $_, ($_ - int $_) * 60 for @times;
I need to put the code: %02d:%02d into a variable to store it in a
database, the hour:minute, how would I go about putting them into a
variable?
"%02:%02d" is not code as such. It is part of the format specifier for the
printf function.
You can use a string variable for the format specifier:
my $fmt = "%02d:%02d";
print $fmt, $hour, $min;
If that is not what you want, then maybe you want to put the string that is
printed according to the specified format into a variable instead of writing
to an output stream. To do that, use the sprintf function instead of printf:
my $hhmm = sprintf("%02:%02",$hour,$min);
Ok how would I go about getting this variable from this line or I'm I missing
something:
my $n; printf "%2d. %02d:%02d\n", ++$n, $_, ($_ - int $_) * 60 for @times;
instead of printing it output ? This where I get messed up.
That statement is a little complex for a beginner's list (IMO), as is the
rest of Paul's program.
That one line above is equivalent to the following:
my $n;
for ( @times ) {
printf( "%2d. %02d:%02d\n", ++$n, $_, ($_ - int $_) * 60);
}
You are only interested in the hour:minute part of the output, so you can
ignore the counter $n, and for multi-line loops you should use an explicit
loop variable instead of the default $_, giving:
for my $hr ( @times ) {
my $hhmm = sprintf( "%02d:%02d", $hr, ($hr - int $hr) * 60);
# do something with $hhmm
}
The @times array contains numerical values in hours, so $hhmm will contain a
string of the form "23:59", depending upon the values entered for the number
of messages and the duration.
thanks Jim. After playing around with it for a while finally figured it myself.
just had look at a bit more. been out of the programming game for a while and
still rusty. but it's coming back. Thanks to all the other help that was posted.
Mike
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/