#!/usr/bin/perl -w # getservertype2.pl - a forking version use strict; use IO::Socket; $|=1; my @hosts = qw( www.ssc.com www.linuxjournal.com www.perl.com www.perl.org www.nytimes.com www.onsight.com www.avue.com ); sub doit { my $server = shift; print "processing $server...\n"; my $sock = new IO::Socket::INET( PeerAddr => $server, PeerPort => 80, Proto => 'tcp'); $sock or die "no socket for $_: $!"; print $sock "GET / HTTP/1.0\n\n"; while (<$sock>) { if (/^Server:\s*(.*)/) { print " $server: $1\n"; last; } } } my $kid; for (@hosts) { # fork, and if this is the parent, # go to the next servername next if $kid = fork; die "fork: $!" unless defined $kid; # this is the child, so process # servername doit $_; exit; } # reap all the children 1 while wait != -1; print "Parent exiting...\n";