use IO::Socket; $| = 1; $port = 8888; $socket = new IO::Socket::INET (LocalHost => '127.0.0.1', LocalPort => $port, Proto => 'tcp', Listen => 5, Reuse => 1); die "socket caca\n" unless $socket; print "esperando...\n"; while($socket_cliente = $socket->accept()) { $child = fork(); if ($child == 0) { print "soy el hijo\n"; &obtener_peticion($socket_cliente); } else { print "adivina\n"; } $socket_cliente->close(); } sub obtener_peticion { $socket_cliente = $_[0]; $peticion = ""; print "obteniendo la petición del cliente...\n"; while($linea = <$socket_cliente>) { chomp($linea); $peticion .= $linea; if (length($linea) == 1) { print "ya esta la petición completa"; &servir_peticion($peticion, $socket_cliente); last; } } } sub servir_peticion { $peticion = $_[0]; $socket_cliente = $_[1]; if ($peticion =~ /GET/) { $archivo = $peticion; $archivo =~ s/GET\s+([^\s]+).*/$1/; chomp($archivo); print "El archivo es $archivo\n"; &servir_GET($socket_cliente, $archivo); } } sub servir_GET { $socket_cliente = $_[0]; $archivo = "./htdocs".$_[1]; # que soporte quieres tener en tu servidor web? # puede ser php, python, perl, octave -q, bash, ruby, tcl... $interprete = "php"; system("$interprete $archivo > /tmp/filetoserve"); open ARCHIVO, "/tmp/filetoserve"; while ($linea = ) { print $socket_cliente $linea; } print $socket_cliente "\n"; }