#!/usr/bin/perl -w use strict; use Proc::ProcessTable; my $t1 = new Proc::ProcessTable; my $pid; my $commandline = shift || $0; foreach my $p (@{$t1->table}){ if($p->cmndline =~ /\Q$commandline\E/){ $pid = $p->pid; print "$pid\n"; } } ################################################### #### #!/usr/bin/perl -w use strict; use Proc::ProcessTable; #-- #-- we will ignore the child #-- $SIG{CHLD} = 'IGNORE'; #-- #-- create 5 child processes for demo purpose. arrange them so they stay #-- long enough so we can find them later #-- for(1..5){ sleep(10) and exit if(fork == 0); } #-- #-- list all process running in your machine and find all #-- child process #-- for my $p (@{new Proc::ProcessTable->table}){ print $p->pid," child of $$\n" if($p->ppid == $$); }