2012年7月18日水曜日

開発環境

『続・初めてのPerl 改訂版』(Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也田中 慎司吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳、オライリー・ジャパン、2006年、ISBN4-87311-305-9) の5\6章(複雑なデータ構造の操作)、6.8(練習問題)1を解いてみる。

2.

コード(TextWrangler)

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

my %total;
my $all = "all";
my $result = "result";
%total = %{retrieve($result)} if -e $result;

while(<>){
  next if /^#/;
  my($source,$destination,$bytes) = split;
  $total{$source}{$destination} += $bytes;
  $total{$source}{$all} += $bytes;
}

store \%total,$result;


for my $source (sort{
    $total{$a}{$all} <=> $total{$b}{$all}
  } keys %total){
  print "$source: $total{$source}{$all}bytes\n";
  my $width_b = length $total{$source}{$all};
  my @destination = sort{
    $total{$source}{$b} <=> $total{$source}{$a}
  } keys %{$total{$source}};
  my $width = 0;
  for my $destination(@destination){
    $width = length $destination if $width < length $destination;
  }
  for my $destination(sort{
    $total{$source}{$b} <=> $total{$source}{$a}
  } keys %{$total{$source}}){
    next if $destination eq "all";
    printf "  => %-${width}s %${width_b}dbytes\n",$destination,$total{$source}{$destination};
  }
}

入出力結果(Terminal)

$ ./sample.pl coconet.dat
skipper.crew.hut: 481951bytes
  => professor.hut           108779bytes
  => laser3.copyroom.hut      89505bytes
  => ginger.girl.hut          77621bytes
  => maryann.girl.hut         71880bytes
  => lovey.howell.hut         43427bytes
  => thurston.howell.hut      41726bytes
  => gilligan.crew.hut        29142bytes
  => fileserver.copyroom.hut  19871bytes
thurston.howell.hut: 619077bytes
  => laser3.copyroom.hut     129628bytes
  => maryann.girl.hut        105137bytes
  => lovey.howell.hut         82972bytes
  => professor.hut            78576bytes
  => skipper.crew.hut         66538bytes
  => ginger.girl.hut          58580bytes
  => gilligan.crew.hut        56658bytes
  => fileserver.copyroom.hut  40988bytes
fileserver.copyroom.hut: 770174bytes
  => lovey.howell.hut    160986bytes
  => professor.hut       146975bytes
  => ginger.girl.hut     103478bytes
  => maryann.girl.hut     99261bytes
  => skipper.crew.hut     88261bytes
  => thurston.howell.hut  86084bytes
  => gilligan.crew.hut    85129bytes
professor.hut: 821931bytes
  => laser3.copyroom.hut     172882bytes
  => lovey.howell.hut        123396bytes
  => ginger.girl.hut         113685bytes
  => maryann.girl.hut         94786bytes
  => thurston.howell.hut      94363bytes
  => skipper.crew.hut         86642bytes
  => gilligan.crew.hut        82825bytes
  => fileserver.copyroom.hut  53352bytes
maryann.girl.hut: 846806bytes
  => laser3.copyroom.hut     161843bytes
  => lovey.howell.hut        145271bytes
  => ginger.girl.hut         126902bytes
  => thurston.howell.hut     123456bytes
  => professor.hut           109526bytes
  => skipper.crew.hut         75155bytes
  => fileserver.copyroom.hut  63807bytes
  => gilligan.crew.hut        40846bytes
ginger.girl.hut: 968495bytes
  => laser3.copyroom.hut     179803bytes
  => lovey.howell.hut        170948bytes
  => maryann.girl.hut        152634bytes
  => professor.hut           110300bytes
  => thurston.howell.hut     105940bytes
  => skipper.crew.hut        103592bytes
  => fileserver.copyroom.hut  79551bytes
  => gilligan.crew.hut        65727bytes
gilligan.crew.hut: 983860bytes
  => laser3.copyroom.hut     240327bytes
  => maryann.girl.hut        145361bytes
  => skipper.crew.hut        118827bytes
  => lovey.howell.hut        107152bytes
  => professor.hut           101219bytes
  => thurston.howell.hut      97398bytes
  => fileserver.copyroom.hut  90369bytes
  => ginger.girl.hut          83207bytes
lovey.howell.hut: 1139833bytes
  => laser3.copyroom.hut      212456bytes
  => professor.hut            175065bytes
  => ginger.girl.hut          158084bytes
  => maryann.girl.hut         155080bytes
  => thurston.howell.hut      141790bytes
  => skipper.crew.hut         119766bytes
  => fileserver.copyroom.hut   98926bytes
  => gilligan.crew.hut         78666bytes
$ ./sample.pl coconet.dat
skipper.crew.hut: 963902bytes
  => professor.hut           217558bytes
  => laser3.copyroom.hut     179010bytes
  => ginger.girl.hut         155242bytes
  => maryann.girl.hut        143760bytes
  => lovey.howell.hut         86854bytes
  => thurston.howell.hut      83452bytes
  => gilligan.crew.hut        58284bytes
  => fileserver.copyroom.hut  39742bytes
thurston.howell.hut: 1238154bytes
  => laser3.copyroom.hut      259256bytes
  => maryann.girl.hut         210274bytes
  => lovey.howell.hut         165944bytes
  => professor.hut            157152bytes
  => skipper.crew.hut         133076bytes
  => ginger.girl.hut          117160bytes
  => gilligan.crew.hut        113316bytes
  => fileserver.copyroom.hut   81976bytes
fileserver.copyroom.hut: 1540348bytes
  => lovey.howell.hut     321972bytes
  => professor.hut        293950bytes
  => ginger.girl.hut      206956bytes
  => maryann.girl.hut     198522bytes
  => skipper.crew.hut     176522bytes
  => thurston.howell.hut  172168bytes
  => gilligan.crew.hut    170258bytes
professor.hut: 1643862bytes
  => laser3.copyroom.hut      345764bytes
  => lovey.howell.hut         246792bytes
  => ginger.girl.hut          227370bytes
  => maryann.girl.hut         189572bytes
  => thurston.howell.hut      188726bytes
  => skipper.crew.hut         173284bytes
  => gilligan.crew.hut        165650bytes
  => fileserver.copyroom.hut  106704bytes
maryann.girl.hut: 1693612bytes
  => laser3.copyroom.hut      323686bytes
  => lovey.howell.hut         290542bytes
  => ginger.girl.hut          253804bytes
  => thurston.howell.hut      246912bytes
  => professor.hut            219052bytes
  => skipper.crew.hut         150310bytes
  => fileserver.copyroom.hut  127614bytes
  => gilligan.crew.hut         81692bytes
ginger.girl.hut: 1936990bytes
  => laser3.copyroom.hut      359606bytes
  => lovey.howell.hut         341896bytes
  => maryann.girl.hut         305268bytes
  => professor.hut            220600bytes
  => thurston.howell.hut      211880bytes
  => skipper.crew.hut         207184bytes
  => fileserver.copyroom.hut  159102bytes
  => gilligan.crew.hut        131454bytes
gilligan.crew.hut: 1967720bytes
  => laser3.copyroom.hut      480654bytes
  => maryann.girl.hut         290722bytes
  => skipper.crew.hut         237654bytes
  => lovey.howell.hut         214304bytes
  => professor.hut            202438bytes
  => thurston.howell.hut      194796bytes
  => fileserver.copyroom.hut  180738bytes
  => ginger.girl.hut          166414bytes
lovey.howell.hut: 2279666bytes
  => laser3.copyroom.hut      424912bytes
  => professor.hut            350130bytes
  => ginger.girl.hut          316168bytes
  => maryann.girl.hut         310160bytes
  => thurston.howell.hut      283580bytes
  => skipper.crew.hut         239532bytes
  => fileserver.copyroom.hut  197852bytes
  => gilligan.crew.hut        157332bytes
$ ./sample.pl coconet.dat
skipper.crew.hut: 1445853bytes
  => professor.hut            326337bytes
  => laser3.copyroom.hut      268515bytes
  => ginger.girl.hut          232863bytes
  => maryann.girl.hut         215640bytes
  => lovey.howell.hut         130281bytes
  => thurston.howell.hut      125178bytes
  => gilligan.crew.hut         87426bytes
  => fileserver.copyroom.hut   59613bytes
thurston.howell.hut: 1857231bytes
  => laser3.copyroom.hut      388884bytes
  => maryann.girl.hut         315411bytes
  => lovey.howell.hut         248916bytes
  => professor.hut            235728bytes
  => skipper.crew.hut         199614bytes
  => ginger.girl.hut          175740bytes
  => gilligan.crew.hut        169974bytes
  => fileserver.copyroom.hut  122964bytes
fileserver.copyroom.hut: 2310522bytes
  => lovey.howell.hut     482958bytes
  => professor.hut        440925bytes
  => ginger.girl.hut      310434bytes
  => maryann.girl.hut     297783bytes
  => skipper.crew.hut     264783bytes
  => thurston.howell.hut  258252bytes
  => gilligan.crew.hut    255387bytes
professor.hut: 2465793bytes
  => laser3.copyroom.hut      518646bytes
  => lovey.howell.hut         370188bytes
  => ginger.girl.hut          341055bytes
  => maryann.girl.hut         284358bytes
  => thurston.howell.hut      283089bytes
  => skipper.crew.hut         259926bytes
  => gilligan.crew.hut        248475bytes
  => fileserver.copyroom.hut  160056bytes
maryann.girl.hut: 2540418bytes
  => laser3.copyroom.hut      485529bytes
  => lovey.howell.hut         435813bytes
  => ginger.girl.hut          380706bytes
  => thurston.howell.hut      370368bytes
  => professor.hut            328578bytes
  => skipper.crew.hut         225465bytes
  => fileserver.copyroom.hut  191421bytes
  => gilligan.crew.hut        122538bytes
ginger.girl.hut: 2905485bytes
  => laser3.copyroom.hut      539409bytes
  => lovey.howell.hut         512844bytes
  => maryann.girl.hut         457902bytes
  => professor.hut            330900bytes
  => thurston.howell.hut      317820bytes
  => skipper.crew.hut         310776bytes
  => fileserver.copyroom.hut  238653bytes
  => gilligan.crew.hut        197181bytes
gilligan.crew.hut: 2951580bytes
  => laser3.copyroom.hut      720981bytes
  => maryann.girl.hut         436083bytes
  => skipper.crew.hut         356481bytes
  => lovey.howell.hut         321456bytes
  => professor.hut            303657bytes
  => thurston.howell.hut      292194bytes
  => fileserver.copyroom.hut  271107bytes
  => ginger.girl.hut          249621bytes
lovey.howell.hut: 3419499bytes
  => laser3.copyroom.hut      637368bytes
  => professor.hut            525195bytes
  => ginger.girl.hut          474252bytes
  => maryann.girl.hut         465240bytes
  => thurston.howell.hut      425370bytes
  => skipper.crew.hut         359298bytes
  => fileserver.copyroom.hut  296778bytes
  => gilligan.crew.hut        235998bytes
$

0 コメント:

コメントを投稿