#!/usr/local/bin/perl use warnings; use diagnostics; use strict; use Data::Dumper; my %data; my $data_file = '/users/oliversti/documents/development/perl/alpaca book/alpaca_files/ch04/coconet.dat'; my $all = '** all machines combined **'; open FH, "$data_file" or die "Couldn't open $data_file: $!\n"; while () { next if (/^#/); my ($source, $destination, $bytes) = split; $data{$source}{$destination} += $bytes; $data{$source}{$all} += $bytes; } close FH or die "Couldn't close $data_file: $!\n"; sub traffic_combined { $data{$b}{$all} <=> $data{$a}{$all} } for my $source (sort traffic_combined keys %data) { print "$source data transfer out: $data{$source}{$all}.\n"; sub traffic_machine { $data{$source}{$b} <=> $data{$source}{$a} } for my $destination (sort traffic_machine keys %{$data{$source}}) { next if ($destination eq $all); print "$source -> $destination: $data{$source}{$destination}.\n"; } } #### for my $source (sort {$data{$b}{$all} <=> $data{$a}{$all}} keys %data) { print "$source data transfer out: $data{$source}{$all}.\n"; for my $destination (sort {$data{$source}{$b} <=> $data{$source}{$a}} keys %{$data{$source}}) { next if ($destination eq $all); print "$source -> $destination: $data{$source}{$destination}.\n"; } }