The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


File::Pid - Pid File Manipulation


  use File::Pid;
  my $pidfile = File::Pid->new({
    file => '/some/',
  if ( my $num = $pidfile->running ) {
      die "Already running: $num\n";



This software manages a pid file for you. It will create a pid file, query the process within to discover if it's still running, and remove the pid file.


  my $pidfile = File::Pid->new;

  my $thisfile = File::Pid->new({
    file => '/var/run/',

  my $thisfileandpid = File::Pid->new({
    file => '/var/run/',
    pid  => '145',

This constructor takes two optional paramters.

file - The name of the pid file to work on. If not specified, a pid file located in File::Spec->tmpdir() will be created that matches (File::Basename::basename($0))[0] . '.pid'. So, for example, if $0 is ~/bin/, the pid file will be /tmp/

pid - The pid to write to a new pidfile. If not specified, $$ is used when the pid file doesn't exist. When the pid file does exist, the pid inside it is used.


  my $pidfile = $pidfile->file;

Accessor/mutator for the filename used as the pid file.


  my $pid = $pidfile->pid;

Accessor/mutator for the pid being saved to the pid file.


  my $pid = $pidfile->write;

Writes the pid file to disk, inserting the pid inside the file. On success, the pid written is returned. On failure, undef is returned.


  my $pid = $pidfile->running;
  die "Service already running: $pid\n" if $pid;

Checks to see if the pricess identified in the pid file is still running. If the process is still running, the pid is returned. Otherwise undef is returned.


  $pidfile->remove or warn "Couldn't unlink pid file\n";

Removes the pid file from disk. Returns true on success, false on failure.


This is a utility method that allows you to determine what File::Pid thinks the program name is. Internally this is used when no pid file is specified.




Casey West, <>.


  Copyright (c) 2005 Casey West.  All rights reserved.
  This module is free software; you can redistribute it and/or modify it
  under the same terms as Perl itself.