Perl project #3

Write a perl script named link_checker.pl that does the following:

The following code illustrates how you can get a web page from a remote server.

use IO::Socket;

sub GetHTTPHeader
{
   my ($server, $page) = @_;
   if( $server =~ /:(\d+)$/ ){
      my $port = $1;
   }
   else{
      $port = 80;
   }
   $page = "/" . $page unless $page =~ /^\//;
	my $sock = new IO::Socket::INET (
					 PeerAddr => $server,
					 PeerPort => $port,
					 Proto => 'tcp',
					);
	die "Could not create socket: $!\n" unless $sock;
	
	# sending HTTP 1.1 request
	print $sock "HEAD http://$server:$port$page HTTP/1.1\nHost: $server:$port\nConnection: Closed\n\n";
	
	@header = <$sock>;
	close($sock);
	return @header;
}

sub GetWebPage
{
   my ($server, $page) = @_;
   if( $server =~ /:(\d+)$/ ){
      my $port = $1;
   }
   else{
      $port = 80;
   }
   $page = "/" . $page unless $page =~ /^\//;
	my $sock = new IO::Socket::INET (
					 PeerAddr => $server,
					 PeerPort => $port,
					 Proto => 'tcp',
					);
	die "Could not create socket: $!\n" unless $sock;
	
	# sending HTTP 1.1 request
	print $sock "GET http://$server:$port$page HTTP/1.1\nHost: $server:$port\nConnection: Closed\n\n";
	
	do{
	  $line = <$sock>
	} until ($line =~ /^\r\n/);
	@webpage = <$sock>;
	close($sock);
	return @webpage;
}

die("Usage:\n\tgetpage server[:port] [page]\n") unless $#ARGV>-1;
print GetHTTPHeader($ARGV[0], $ARGV[1]);
print GetWebPage($ARGV[0], $ARGV[1]);