in reply to You need more coffee when...

This is an interesting coincidence, I was just about to post a meditation regarding a problem that I've just this minute figured out.

use strict; use warnings; my %const; #Initialise params $const{pid} = 1; $const{pidwithzeros} = '0' x (10 - length $const{pid}) . $const{pi +d }, #Check params die "Invalid PID $const{pid}\n" if not $const{pid} =~ /^[0-9]+$/; #Various lines of code removed print $const{pidwithzeros}, "\n";

I was getting an "uninitialized value in print" warning on the final line. The mistake is obviously that the comma at the end of line 8 should be a semi-colon but for the life of me I couldn't see it. To try and find out what was going on I changed the code to the following but this only deepened my confusion:

use strict; use warnings; my %const; #Initialise params $const{pid} = 1; $const{pidwithzeros} = '0' x (10 - length $const{pid}) . $const{pi +d }, #Debug line print $const{pidwithzeros}, "\n"; #Check params die "Invalid PID $const{pid}\n" if not $const{pid} =~ /^[0-9]+$/; #Various lines of code removed print $const{pidwithzeros}, "\n";

With the debug line in the code worked as expected. Without and the error would appear. Confusion reigned. Half an hour of thinking I was going bonkers later and as I was preparing a post to SoPW, I saw it.

Hey hum.

Regards,
Dom.

Replies are listed 'Best First'.
Re: Re: You need more coffee when...
by revdiablo (Prior) on Apr 16, 2004 at 21:05 UTC

    Not to completely miss the point, but you really should be using sprintf to do that:

    $const{pidwithzeros} = sprintf "%010d", $const{pid};