開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの機能制限無料版、light版)
- Script言語:Perl
『続・初めての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 コメント:
コメントを投稿