http://qs1969.pair.com?node_id=345816


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.