How do I get the process id for the perl process that's running the current script? getppid() doesn't return the same pid as ps -ea| grep . Is there is an easy way or do I just run the ps -ea command within my script and trim off the other pieces of info?
You can use
$$ to get the process ID of the perl interpreter running your script:
iancs-imac:Documents ian$ cat test.pl print "$$\n"; sleep(10000); exit() ians-imac:Documents ian$ perl test.pl 42291
In another shell:
iancs-imac:~ ian$ sudo ps -ef | grep perl 501 42291 42281 0 0:00.00 ttys000 0:00.01 perl test.pl 501 42297 42280 0 0:00.00 ttys001 0:00.00 grep perl
To learn more about about special Perl variables:
In addition to
$$ as Ian mentions, I'm a fan of making code more readable.
To that end, Perl supports the mnemonic
$PID if you
use English to enable the aliases.