Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re: You need more coffee when...

by dbush (Deacon)
on Apr 16, 2004 at 16:43 UTC ( #345816=note: print w/replies, xml ) Need Help??

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.


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};

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://345816]
[Corion]: Maybe doing a double-fork (daemonizing) can make go that information away, but maybe not
[Corion]: But I think my knowledge of unix/Linux datastructures is several decades out of date, so I don't really know what information it keeps on processes
[oiskuu]: The useful bits that relate to your process can be found under /proc/self. What information are you thinking of? Tty name?
[tye]: I just daemonized and getlogin() still knew who I had been.
[tye]: perhaps loginuid ? Not that I concede that something not being in /proc means it is not useful.
[Corion]: tye: That's really interesting, but maybe it is because getlogin() returns the name, or the uid, so if that user has been replaced by another user with the same uid in the meantime, that's no problem to the system...
[davido]: or on ubuntu /var/run/utmp

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (8)
As of 2017-06-23 19:36 GMT
Find Nodes?
    Voting Booth?
    How many monitors do you use while coding?

    Results (554 votes). Check out past polls.