use strict; use warnings; use IO::Socket::INET; use Fcntl; sub i_am_free {   my $pipe = shift;   my $port = shift;   unless (-p $pipe) {      require POSIX;      POSIX::mkfifo($pipe,0600) or die $!;   }   sysopen my $PIPE,$pipe,O_WRONLY or die $!;   print $PIPE "$port\n";   close $PIPE; } my $pipe_name = './myFIFO'; my $host      = '127.0.0.1'; my $port      = shift @ARGV; die "Usage: $0 \n" unless $port =~ /^\d+$/ && $port > 0 && $port < 65657; my $server = IO::Socket::INET->new( LocalHost  => $host                                  , LocalPort  => $port                                  , Type       => SOCK_STREAM                                  , Proto      => 'tcp'                                  , Listen     => 10                                  , Reuse      => 1                                  ) or die "can't open socket over port $host:$port"; i_am_free($pipe_name,$port); while (my $client = $server->accept()) {   my $request = <$client>;   if ($request) {      # processing the request   }   close $client;   i_am_free($pipe_name,$port); } close($server);