#! /usr/bin/perl use strict; use warnings; use Fcntl qw( :flock ); print "Script $0 is running now.\n"; my $lock = Check_Race_Condition(); sleep( 100 ); print "End.\n"; sub Check_Race_Condition { open( my $self, '<', $0 ) or die( "Another $0 is already running.\n"); flock( $self, LOCK_EX | LOCK_NB ) or die( "Another $0 is already running.\n"); return $self; }