Mine is a little different
use strict; use warnings;
select (STDOUT); $| = 1; select(STDOUT);
# http://127.0.0.1/exit
# http://127.0.0.1/hi
# http://127.0.0.1/null
# http://127.0.0.1/unknown
use IO::Handle;
use IO::Socket;
use IO::Select;
my $server = IO::Socket::INET->new( Proto => 'tcp',
PeerAddr => "127.0.0.1", # only
+ us
LocalPort => 80,
Listen => SOMAXCONN,
Reuse => 1);
die "can't setup server on 80" unless $server;
my $sel_read = IO::Select->new();
my $sel_write = IO::Select->new();
my $sel_error = IO::Select->new();
$sel_read-> add($server);
my $cmdrun={};
$cmdrun->{'/exit'} =sub{exit;} ;
$cmdrun->{'/hi'} =sub{my $fh=shift; print $fh "\nhi\n";} ;
$cmdrun->{'/null'} =sub{} ;
while(1) {
checkforrequests();
} # superloop
exit;
sub checkforrequests {
my $timeout=1;
my ($rd_ptr,$wr_ptr,$er_ptr)=IO::Select->select($sel_read,undef,$s
+el_error,$timeout);
for my $fh (@$rd_ptr) {
if ($fh == $server) {
my $client = $server->accept;
$client->autoflush(1);
$sel_read->add($client);
} # server
else {
my $line=<$fh>;
print "line:$line";
my ($junk,$post)=split(' ',$line,3);
my $cmd=$cmdrun->{$post};
if ($cmd) {&$cmd($fh);}
else { print $fh "\n\nNO\n"; }
$sel_read->remove($fh);
close $fh;
} # client
} # for fh
} # checkforrequests
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|