use strict; use POE; use POE::Wheel::SocketFactory; my $task = [ { name => 'www.example.com', proto => 'tcp', port => 80 }, { name => 'smtp.example.com', proto => 'tcp', port => 25 }, { name => 'ns.example.com', proto => 'udp', port => 53 }, ]; for my $t( @$task ) { POE::Wheel::SocketFactory->new( RemoteAddress => $t->{host}, RemotePort => $t->{port}, SocketProtocol => $t->{proto}, SuccessEvent => sub { print "$t->{host}:$t->{proto}:$t->{port} up\n"; $poe_kernel->yield( 'shutdown' ); }, FailureEvent => sub { print "$t->{host}:$t->{proto}:$t->{por +t} down\n" }, ); } $poe_kernel->run();