#!/usr/bin/env perl use strict; use warnings; use lib 'lib'; use lib '../lib'; use Lock::Socket qw/lock_user_socket/; die "usage: $0 PORT COMMAND...\n" unless $#ARGV >= 1; # Unset close-on-exec $^F = 3; my $port = shift @ARGV; $port += $> if $^O =~ m/bsd$/ or $^O eq 'darwin'; my $lock = lock_user_socket($port); printf "Have lock on %s:%d\n", $lock->addr, $lock->port; exec @ARGV or die "exec: $!";