Harry Putnam wrote:
>
> Maybe unrelated to the comments above since this is `do' I'm posting
> about in this post. But I'm still seeing something here I don't
> understand.
>
> I'll use my reall example code since that is where I notice this
> phenomena.
>
> My function to slurp looks like:
>
> cat /home/hgp/scripts/perl/fnc/lctime
>
> sub lctime {
> ## Fucntion to create a date in my preferred format
> @lta = localtime;
> ## Adjust for mnth range of 0-11
> $lta[4] += 1;
> ## Adjust for year based on 1900, and remove leading 2 digits so
> ## 103 first becomes 2003 and then 03
> ($lta[5] = ($lta[5] += 1900)) =~ s/^..//;
You could use the modulus operator instead of the substitution.
$lta[5] %= 100;
> ## Print it out in this format:
> ## mnthdayyr hr:min:sec wkday (padding with zeros where necessary)
> ## Like 012003 15:15:51 01
> printf "%02d%02d%02d %02d:%02d:%02d %02d\n", @lta[4,3,5,2,1,0,6];
Perl subs return the value of the last expression in the sub which in
this case is printf() which returns 1 (true) on success. You want to
return the actual string using sprintf().
sprintf "%02d%02d%02d %02d:%02d:%02d %02d\n", @lta[4,3,5,2,1,0,6];
> }
>
> How can I print the output of this into a file handle?
>
> When I try, I get an extra numeral 1 which I'm guessing is a return
> value from misguided referencing.
>
> Example:
>
> #!/usr/local/bin/perl -w
> do "/home/hgp/scripts/perl/fnc/lctime";
> open(FILE,">somefile");
You should _always_ verify that the file opened successfully.
open(FILE,">somefile") or die "Cannot open 'somefile' $!";
> print FILE "An extra numeral <" . &lctime . "> appears\n";
^
You shouldn't use ampersands unless you need the different behavior they
provide.
print FILE "An extra numeral <" . lctime() . "> appears\n";
You should probably be using POSIX::strftime instead which is simpler
and faster.
use POSIX 'strftime';
print FILE strftime( "An extra numeral <%D %T %w> appears\n",
localtime );
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]