----- 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/


Reply via email to