$pidfile = "/var/run/script.pid";
if (-e $pidfile) {
unless (open(PIDFILE, $pidfile)) {
print ("Созданный ранее PID файл не читаемый!\n");
exit(1);
}
my $oldpid=<PIDFILE>;
close (PIDFILE);
if ($oldpid > 1 && kill(0,$oldpid)) {
print ("Скрипт уже запущен!\n");
exit(1);
}
}
open(PID, ">$pidfile") or die;
if (!print PID $$){
warn "Не могу создать PID файл\n";
}
close(PID);
Как то так, я думаю