LJ Archive
#!/usr/local/bin/perl5.003
#
#  Very simple client program to search for
#  regular expressions on specified Web sites.
#
require 5.002;
use strict;
use Socket;

# Perl 5 technique for declaring local variables.
my( $host, $in_addr, $proto, $port, $addr );
my( $response, $page, $file, $pattern, %urls );

# Set up some URLs and patterns in an array hash
%urls = (
    "www.ssc.com/lj/" => ["WEB.*","perl.*"],
    "sunsite.unc.edu/mdw/"  => ["kernel","patch"],
);

foreach $page (keys %urls) {
    ($host,$file) = split /\//, $page, 2;

    # Form the HTTP server address from the host
    # name and port number
    $in_addr = (gethostbyname($host))[4];
    $port = 80;
    $addr = sockaddr_in( $port, $in_addr );

    $proto = getprotobyname( 'tcp' );

    # Create an Internet protocol socket.
    socket( S, AF_INET, SOCK_STREAM, $proto )
        or die "socket:$!";

    # Connect our socket to the server socket.
    connect( S, $addr )
        or die "connect:$!";

    # For fflush on socket file handle after every
    # write.
    select(S); $| = 1; select(STDOUT);

    # Send get request to server.
    print S "GET /$file HTTP/1.0\n\n";

    print "===$page===\n";

    # Look for patterns in returned HTML.
    while (<S>) {
        foreach $pattern (@{ $urls{ $page }}) {
            print if /$pattern/i;
        }
    }

    close( S );
}

exit;
LJ Archive