use strict; use warnings; use Mutex; my $m1 = Mutex->new( ); my $m2 = Mutex->new( path => /tmp/my.lock ); my $m3 = Mutex->new( impl => "Channel" ); my $m4 = Mutex->new( impl => "Flock" ); $m1->impl(); # Channel $m2->impl(); # Flock $m3->impl(); # Channel $m4->impl(); # Flock $m1->lock; $m1->unlock; $m2->lock_exclusive; # Fcntl LOCK_EX $m2->lock # ditto LOCK_EX $m2->lock_shared; # Fcntl LOCK_SH $m2->unlock; # Fcntl LOCK_UN