use Proc::ProcessTable; my @pids = get_pid( 'httpd' ); sub get_pid { my ( $process ) = @_; my @pids = (); my $proc = Proc::ProcessTable->new; foreach ( @{ $proc->table } ) { if ($_->cmndline =~ /$process/) { push @pids, $_->pid; } } return @pids; }