#!/usr/bin/perl -w # Print availability on single line per each url # Example: # http://abc.com 1 1 0 1 ... # http://sss.edu 0 1 1 0 ... use strict; my $fn = "http_responses_per_url.txt"; # Build list of dates my %dates; open(FILE, $fn) || die("Can't open $fn: $!\n"); my $line = ; # ignore first line (header) while ($line = ) { chomp($line); my ($date, $url, $code) = split(/\t/, $line); $dates{$date} = 1; } close FILE; # Build hash or hashes my %seen; open(FILE, $fn) || die("Can't open $fn: $!\n"); $line = ; # ignore first line while ($line = ) { chomp($line); my ($date, $url, $code) = split(/\t/, $line); $seen{$url}{$date} = $code; } close FILE; # Print list print "\t"; # for url foreach my $date (sort keys (%dates)) { print "$date\t"; } print "# times available\n"; foreach my $url (sort keys %seen) { print "$url\t"; my $avail = 0; foreach my $date (sort keys (%dates)) { my $code = $seen{$url}{$date}; if (defined $code) { if ($code eq '200' || $code eq '301' || $code eq '302' || $code eq '304') { print "1\t"; $avail++; } else { print "0\t"; } } else { print "N/A\t"; } } print "$avail\n"; }