Pues parece que no es, porque si lo ejecuto normalmente todo va perfecto. Mira, te voy a poner el código del servidor y del cliente, por si te sirve de algo.
server.pl
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use 5.010;
use strict;
use warnings;
use IO::Socket;
use Net::hostent;
#Creando el servidor
my $servidor = IO::Socket::INET->new
(
LocalHost => '127.0.0.1',
Proto => 'tcp',
LocalPort => 1717,
Listen => 1,
Reuse => 1
)or die "No se pudo configurar el servidor. $!";
say "[Servidor \"",$0,"\" a la espera de clientes.]";
STDOUT->autoflush(1);
$servidor->autoflush(1);
while(my $cliente = $servidor->accept())
{
my $hostinfo = gethostbyaddr($cliente->peeraddr);
say "[Conexión establecida con ",$hostinfo->name,"]";
while(defined(my $comando = <$cliente>))
{
$comando = lc($comando);
chomp $comando;
given($comando)
{
when('salir')
{
say $cliente 'Bye-bye!';
say '[Fin de sesión]';
last;
}
when('cd')
{
say $cliente `eject`;
}
default
{
say $cliente "ERROR DE COMANDO";
}
}
}
close $cliente;
say "[",$hostinfo->name," se ha desconectado]";
}
close $servidor;
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
cliente.pl
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use 5.010;
use strict;
use warnings;
use IO::Socket;
my $socket = IO::Socket::INET->new
(
PeerAddr => '127.0.0.1',
PeerPort => 1717,
Proto => 'tcp'
) or die "Problema al crear la conexión. $!";
STDOUT->autoflush(1);
$socket->autoflush(1);
while($socket->connected)
{
my $comando = <STDIN>;
print $socket $comando;
print scalar <$socket>;
last if $comando =~ /^salir$/i;
}
close($socket) or die ("Error al cerrar socket: $!");
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
A veces hay que aprender a correr antes de caminar.