#!/usr/bin/perl use warnings; use strict; use HTML::TreeBuilder; use Data::Dumper; my $tree = HTML::TreeBuilder->new_from_file('IDQ60606.shtml'); my @cellnames = qw( station time temperature dewpoint relhumidity deltat wind_dir speedkmh gustkmh speedknt gistknt pressure rain ); my $region; my %data; for my $row ($tree->look_down('_tag'=>'tr')) { my @cells = $row->look_down('_tag'=>'td'); print scalar @cells, "\n"; if(@cells==1) { $region = $cells[0]->as_trimmed_text; } if(@cells == @cellnames) { my %row; @row{@cellnames} = map { $_->as_trimmed_text} @cells; push @{$data{$region}} => \%row; } } print "$_\n" for keys %data; print Dumper \%data; while (my ($region,$data) = each %data) { my @data = @$data; my $raintotal; for (@data) { my $rain = $_->{rain}; $rain = 0 if $rain eq '-'; $raintotal+=$rain; } my $rainaverage = @data ? ($raintotal / @data) : undef; print "$region: $rainaverage\n"; }