#!/usr/bin/perl -w use strict; use IO::Socket::INET; #-- #-- server.pl #-- my $server = IO::Socket::INET->new(Listen => 5, LocalAddr => 'localhost', LocalPort => 5050, Proto => 'tcp') || die $!; #-- have we receive the filename from the client yet? my $file = undef; while(my $client = $server->accept){ #-- #-- in your code, you have while(<$client>){...} #-- which is very dangeous because <> will hang if #-- client and server use a different newline encoding #-- so please avoid using <$client> in your networking code #-- #-- 1024 is also a hack which assume your filename will not #-- be longer than 1K. #-- while(sysread($client,$_,1024)){ #-- #-- look for a filename before the first newline #-- if(/(.+?)\n(.*)/ && !$file){ #-- #-- for demo, i will create a filename (sent in by client) #-- appending with .by_server. this helps you #-- to run this demo code without worrying overwriting #-- the original file in the same machine #-- $file = $1 . '.by_server'; open(FILE,">$file") || last; print FILE $2; }else{ print FILE if($file); } } close(FILE) if($file); close($client); $file = undef; } __END__