2012年4月21日土曜日

開発環境

『続・初めてのPerl 改訂版』(Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也田中 慎司吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳、オライリー・ジャパン、2006年、ISBN4-87311-305-9) の5章(リファレンスとスコープ), 5.9(練習問題)2を解いてみる。

2.

やり方の1つ。(「やり方は何通りもある」(TIMTOWTDI(There Is More Than One Way To Do It.)))

コード(TextWrangler)

#!/usr/bin/env perl
use strict;
use warnings;

my %total_bytes;
my $total = 'total';
while(<>){
  next if /^#/;
  my ($source, $destination, $bytes) = split;
  $total_bytes{$source}{$destination} += $bytes;
  $total_bytes{$source}{$total} += $bytes;
}
for my $source ( sort {
  $total_bytes{$b}{$total} <=> $total_bytes{$a}{$total}
  } keys %total_bytes){
  print "$source: $total_bytes{$source}{$total} bytes\n";
  for my $destination (sort { 
  $total_bytes{$source}{$b} <=> $total_bytes{$source}{$a}
  } keys %{ $total_bytes{$source} }){
    next if $destination eq 'total';
    print "\t=> $destination:",
      " $total_bytes{$source}{$destination} bytes\n";
  }
  print "\n";
}

入出力結果(Terminal)

$ ./sample.pl coconet.dat
lovey.howell.hut: 1139833 bytes
 => laser3.copyroom.hut: 212456 bytes
 => professor.hut: 175065 bytes
 => ginger.girl.hut: 158084 bytes
 => maryann.girl.hut: 155080 bytes
 => thurston.howell.hut: 141790 bytes
 => skipper.crew.hut: 119766 bytes
 => fileserver.copyroom.hut: 98926 bytes
 => gilligan.crew.hut: 78666 bytes

gilligan.crew.hut: 983860 bytes
 => laser3.copyroom.hut: 240327 bytes
 => maryann.girl.hut: 145361 bytes
 => skipper.crew.hut: 118827 bytes
 => lovey.howell.hut: 107152 bytes
 => professor.hut: 101219 bytes
 => thurston.howell.hut: 97398 bytes
 => fileserver.copyroom.hut: 90369 bytes
 => ginger.girl.hut: 83207 bytes

ginger.girl.hut: 968495 bytes
 => laser3.copyroom.hut: 179803 bytes
 => lovey.howell.hut: 170948 bytes
 => maryann.girl.hut: 152634 bytes
 => professor.hut: 110300 bytes
 => thurston.howell.hut: 105940 bytes
 => skipper.crew.hut: 103592 bytes
 => fileserver.copyroom.hut: 79551 bytes
 => gilligan.crew.hut: 65727 bytes

maryann.girl.hut: 846806 bytes
 => laser3.copyroom.hut: 161843 bytes
 => lovey.howell.hut: 145271 bytes
 => ginger.girl.hut: 126902 bytes
 => thurston.howell.hut: 123456 bytes
 => professor.hut: 109526 bytes
 => skipper.crew.hut: 75155 bytes
 => fileserver.copyroom.hut: 63807 bytes
 => gilligan.crew.hut: 40846 bytes

professor.hut: 821931 bytes
 => laser3.copyroom.hut: 172882 bytes
 => lovey.howell.hut: 123396 bytes
 => ginger.girl.hut: 113685 bytes
 => maryann.girl.hut: 94786 bytes
 => thurston.howell.hut: 94363 bytes
 => skipper.crew.hut: 86642 bytes
 => gilligan.crew.hut: 82825 bytes
 => fileserver.copyroom.hut: 53352 bytes

fileserver.copyroom.hut: 770174 bytes
 => lovey.howell.hut: 160986 bytes
 => professor.hut: 146975 bytes
 => ginger.girl.hut: 103478 bytes
 => maryann.girl.hut: 99261 bytes
 => skipper.crew.hut: 88261 bytes
 => thurston.howell.hut: 86084 bytes
 => gilligan.crew.hut: 85129 bytes

thurston.howell.hut: 619077 bytes
 => laser3.copyroom.hut: 129628 bytes
 => maryann.girl.hut: 105137 bytes
 => lovey.howell.hut: 82972 bytes
 => professor.hut: 78576 bytes
 => skipper.crew.hut: 66538 bytes
 => ginger.girl.hut: 58580 bytes
 => gilligan.crew.hut: 56658 bytes
 => fileserver.copyroom.hut: 40988 bytes

skipper.crew.hut: 481951 bytes
 => professor.hut: 108779 bytes
 => laser3.copyroom.hut: 89505 bytes
 => ginger.girl.hut: 77621 bytes
 => maryann.girl.hut: 71880 bytes
 => lovey.howell.hut: 43427 bytes
 => thurston.howell.hut: 41726 bytes
 => gilligan.crew.hut: 29142 bytes
 => fileserver.copyroom.hut: 19871 bytes

$

0 コメント:

コメントを投稿