2020年6月29日月曜日

開発環境

続・初めてのPerl 改訂第2版 (Randal L. Schwartz(著)brian d foy(著)Tom Phoenix(著)伊藤 直也(監修)長尾 高弘(翻訳)、オライリージャパン)の6章(複雑なデータ構造の操作)、6.7(練習問題)1の解答を求めてみる。

コード

#!/usr/bin/env perl
use strict;
use warnings;
use v5.30;
use Storable qw(retrieve nstore);

my $filename = 'log.txt';
my %total_bytes;
if (-e $filename) {
	my $total_bytes_ref = retrieve $filename;
	%total_bytes = %{$total_bytes_ref};
}
while (<>) {
	next if /\A#/;
	my ($src, $dst, $bytes) = split;
	$total_bytes{$src}{'all'} += $bytes;
	$total_bytes{$src}{$dst} += $bytes;
}
nstore \%total_bytes, $filename;
foreach my $src (sort {
	                 $total_bytes{$b}{'all'} <=> $total_bytes{$a}{'all'}
	             } keys %total_bytes) {
	say "$src: $total_bytes{$src}{'all'}";
	my %dsts = %{$total_bytes{$src}};
	foreach my $dst (sort {
                         $dsts{$b} <=> $dsts{$a}
	                 } keys %dsts) {
		next if $dst eq 'all';
		say "$src => $dst: $dsts{$dst}"
	}
}

入出力結果(Zsh、PowerShell、Terminal)

% ./sample1.pl coconet.dat
professor.hut: 7382830
professor.hut => maryann.girl.hut: 1122947
professor.hut => professor.hut: 1114174
professor.hut => skipper.crew.hut: 1075693
professor.hut => gilligan.crew.hut: 1073557
professor.hut => ginger.girl.hut: 1047250
professor.hut => laser3.copyroom.hut: 1018295
professor.hut => fileserver.copyroom.hut: 930914
gilligan.crew.hut: 7237638
gilligan.crew.hut => maryann.girl.hut: 1276577
gilligan.crew.hut => laser3.copyroom.hut: 1027800
gilligan.crew.hut => professor.hut: 1013622
gilligan.crew.hut => ginger.girl.hut: 1012723
gilligan.crew.hut => fileserver.copyroom.hut: 1006399
gilligan.crew.hut => skipper.crew.hut: 966660
gilligan.crew.hut => gilligan.crew.hut: 933857
maryann.girl.hut: 7235878
maryann.girl.hut => fileserver.copyroom.hut: 1140533
maryann.girl.hut => gilligan.crew.hut: 1122049
maryann.girl.hut => ginger.girl.hut: 1065580
maryann.girl.hut => skipper.crew.hut: 1001870
maryann.girl.hut => laser3.copyroom.hut: 986229
maryann.girl.hut => maryann.girl.hut: 965243
maryann.girl.hut => professor.hut: 954374
ginger.girl.hut: 7225624
ginger.girl.hut => ginger.girl.hut: 1152020
ginger.girl.hut => skipper.crew.hut: 1119766
ginger.girl.hut => laser3.copyroom.hut: 1078150
ginger.girl.hut => maryann.girl.hut: 1018548
ginger.girl.hut => gilligan.crew.hut: 993241
ginger.girl.hut => fileserver.copyroom.hut: 949221
ginger.girl.hut => professor.hut: 914678
fileserver.copyroom.hut: 7175028
fileserver.copyroom.hut => gilligan.crew.hut: 1151354
fileserver.copyroom.hut => laser3.copyroom.hut: 1092608
fileserver.copyroom.hut => fileserver.copyroom.hut: 1026030
fileserver.copyroom.hut => professor.hut: 1002371
fileserver.copyroom.hut => maryann.girl.hut: 989869
fileserver.copyroom.hut => ginger.girl.hut: 956638
fileserver.copyroom.hut => skipper.crew.hut: 956158
skipper.crew.hut: 7104065
skipper.crew.hut => gilligan.crew.hut: 1097882
skipper.crew.hut => laser3.copyroom.hut: 1050796
skipper.crew.hut => ginger.girl.hut: 1041603
skipper.crew.hut => fileserver.copyroom.hut: 1010486
skipper.crew.hut => maryann.girl.hut: 984691
skipper.crew.hut => skipper.crew.hut: 964162
skipper.crew.hut => professor.hut: 954445
laser3.copyroom.hut: 6948515
laser3.copyroom.hut => laser3.copyroom.hut: 1044817
laser3.copyroom.hut => skipper.crew.hut: 1037091
laser3.copyroom.hut => gilligan.crew.hut: 1029793
laser3.copyroom.hut => fileserver.copyroom.hut: 1007034
laser3.copyroom.hut => professor.hut: 954483
laser3.copyroom.hut => ginger.girl.hut: 952001
laser3.copyroom.hut => maryann.girl.hut: 923296
% ./sample1.pl coconet.dat
professor.hut: 14765660
professor.hut => maryann.girl.hut: 2245894
professor.hut => professor.hut: 2228348
professor.hut => skipper.crew.hut: 2151386
professor.hut => gilligan.crew.hut: 2147114
professor.hut => ginger.girl.hut: 2094500
professor.hut => laser3.copyroom.hut: 2036590
professor.hut => fileserver.copyroom.hut: 1861828
gilligan.crew.hut: 14475276
gilligan.crew.hut => maryann.girl.hut: 2553154
gilligan.crew.hut => laser3.copyroom.hut: 2055600
gilligan.crew.hut => professor.hut: 2027244
gilligan.crew.hut => ginger.girl.hut: 2025446
gilligan.crew.hut => fileserver.copyroom.hut: 2012798
gilligan.crew.hut => skipper.crew.hut: 1933320
gilligan.crew.hut => gilligan.crew.hut: 1867714
maryann.girl.hut: 14471756
maryann.girl.hut => fileserver.copyroom.hut: 2281066
maryann.girl.hut => gilligan.crew.hut: 2244098
maryann.girl.hut => ginger.girl.hut: 2131160
maryann.girl.hut => skipper.crew.hut: 2003740
maryann.girl.hut => laser3.copyroom.hut: 1972458
maryann.girl.hut => maryann.girl.hut: 1930486
maryann.girl.hut => professor.hut: 1908748
ginger.girl.hut: 14451248
ginger.girl.hut => ginger.girl.hut: 2304040
ginger.girl.hut => skipper.crew.hut: 2239532
ginger.girl.hut => laser3.copyroom.hut: 2156300
ginger.girl.hut => maryann.girl.hut: 2037096
ginger.girl.hut => gilligan.crew.hut: 1986482
ginger.girl.hut => fileserver.copyroom.hut: 1898442
ginger.girl.hut => professor.hut: 1829356
fileserver.copyroom.hut: 14350056
fileserver.copyroom.hut => gilligan.crew.hut: 2302708
fileserver.copyroom.hut => laser3.copyroom.hut: 2185216
fileserver.copyroom.hut => fileserver.copyroom.hut: 2052060
fileserver.copyroom.hut => professor.hut: 2004742
fileserver.copyroom.hut => maryann.girl.hut: 1979738
fileserver.copyroom.hut => ginger.girl.hut: 1913276
fileserver.copyroom.hut => skipper.crew.hut: 1912316
skipper.crew.hut: 14208130
skipper.crew.hut => gilligan.crew.hut: 2195764
skipper.crew.hut => laser3.copyroom.hut: 2101592
skipper.crew.hut => ginger.girl.hut: 2083206
skipper.crew.hut => fileserver.copyroom.hut: 2020972
skipper.crew.hut => maryann.girl.hut: 1969382
skipper.crew.hut => skipper.crew.hut: 1928324
skipper.crew.hut => professor.hut: 1908890
laser3.copyroom.hut: 13897030
laser3.copyroom.hut => laser3.copyroom.hut: 2089634
laser3.copyroom.hut => skipper.crew.hut: 2074182
laser3.copyroom.hut => gilligan.crew.hut: 2059586
laser3.copyroom.hut => fileserver.copyroom.hut: 2014068
laser3.copyroom.hut => professor.hut: 1908966
laser3.copyroom.hut => ginger.girl.hut: 1904002
laser3.copyroom.hut => maryann.girl.hut: 1846592
% ./sample1.pl coconet.dat
professor.hut: 22148490
professor.hut => maryann.girl.hut: 3368841
professor.hut => professor.hut: 3342522
professor.hut => skipper.crew.hut: 3227079
professor.hut => gilligan.crew.hut: 3220671
professor.hut => ginger.girl.hut: 3141750
professor.hut => laser3.copyroom.hut: 3054885
professor.hut => fileserver.copyroom.hut: 2792742
gilligan.crew.hut: 21712914
gilligan.crew.hut => maryann.girl.hut: 3829731
gilligan.crew.hut => laser3.copyroom.hut: 3083400
gilligan.crew.hut => professor.hut: 3040866
gilligan.crew.hut => ginger.girl.hut: 3038169
gilligan.crew.hut => fileserver.copyroom.hut: 3019197
gilligan.crew.hut => skipper.crew.hut: 2899980
gilligan.crew.hut => gilligan.crew.hut: 2801571
maryann.girl.hut: 21707634
maryann.girl.hut => fileserver.copyroom.hut: 3421599
maryann.girl.hut => gilligan.crew.hut: 3366147
maryann.girl.hut => ginger.girl.hut: 3196740
maryann.girl.hut => skipper.crew.hut: 3005610
maryann.girl.hut => laser3.copyroom.hut: 2958687
maryann.girl.hut => maryann.girl.hut: 2895729
maryann.girl.hut => professor.hut: 2863122
ginger.girl.hut: 21676872
ginger.girl.hut => ginger.girl.hut: 3456060
ginger.girl.hut => skipper.crew.hut: 3359298
ginger.girl.hut => laser3.copyroom.hut: 3234450
ginger.girl.hut => maryann.girl.hut: 3055644
ginger.girl.hut => gilligan.crew.hut: 2979723
ginger.girl.hut => fileserver.copyroom.hut: 2847663
ginger.girl.hut => professor.hut: 2744034
fileserver.copyroom.hut: 21525084
fileserver.copyroom.hut => gilligan.crew.hut: 3454062
fileserver.copyroom.hut => laser3.copyroom.hut: 3277824
fileserver.copyroom.hut => fileserver.copyroom.hut: 3078090
fileserver.copyroom.hut => professor.hut: 3007113
fileserver.copyroom.hut => maryann.girl.hut: 2969607
fileserver.copyroom.hut => ginger.girl.hut: 2869914
fileserver.copyroom.hut => skipper.crew.hut: 2868474
skipper.crew.hut: 21312195
skipper.crew.hut => gilligan.crew.hut: 3293646
skipper.crew.hut => laser3.copyroom.hut: 3152388
skipper.crew.hut => ginger.girl.hut: 3124809
skipper.crew.hut => fileserver.copyroom.hut: 3031458
skipper.crew.hut => maryann.girl.hut: 2954073
skipper.crew.hut => skipper.crew.hut: 2892486
skipper.crew.hut => professor.hut: 2863335
laser3.copyroom.hut: 20845545
laser3.copyroom.hut => laser3.copyroom.hut: 3134451
laser3.copyroom.hut => skipper.crew.hut: 3111273
laser3.copyroom.hut => gilligan.crew.hut: 3089379
laser3.copyroom.hut => fileserver.copyroom.hut: 3021102
laser3.copyroom.hut => professor.hut: 2863449
laser3.copyroom.hut => ginger.girl.hut: 2856003
laser3.copyroom.hut => maryann.girl.hut: 2769888
% ./sample1.pl coconet.dat
professor.hut: 29531320
professor.hut => maryann.girl.hut: 4491788
professor.hut => professor.hut: 4456696
professor.hut => skipper.crew.hut: 4302772
professor.hut => gilligan.crew.hut: 4294228
professor.hut => ginger.girl.hut: 4189000
professor.hut => laser3.copyroom.hut: 4073180
professor.hut => fileserver.copyroom.hut: 3723656
gilligan.crew.hut: 28950552
gilligan.crew.hut => maryann.girl.hut: 5106308
gilligan.crew.hut => laser3.copyroom.hut: 4111200
gilligan.crew.hut => professor.hut: 4054488
gilligan.crew.hut => ginger.girl.hut: 4050892
gilligan.crew.hut => fileserver.copyroom.hut: 4025596
gilligan.crew.hut => skipper.crew.hut: 3866640
gilligan.crew.hut => gilligan.crew.hut: 3735428
maryann.girl.hut: 28943512
maryann.girl.hut => fileserver.copyroom.hut: 4562132
maryann.girl.hut => gilligan.crew.hut: 4488196
maryann.girl.hut => ginger.girl.hut: 4262320
maryann.girl.hut => skipper.crew.hut: 4007480
maryann.girl.hut => laser3.copyroom.hut: 3944916
maryann.girl.hut => maryann.girl.hut: 3860972
maryann.girl.hut => professor.hut: 3817496
ginger.girl.hut: 28902496
ginger.girl.hut => ginger.girl.hut: 4608080
ginger.girl.hut => skipper.crew.hut: 4479064
ginger.girl.hut => laser3.copyroom.hut: 4312600
ginger.girl.hut => maryann.girl.hut: 4074192
ginger.girl.hut => gilligan.crew.hut: 3972964
ginger.girl.hut => fileserver.copyroom.hut: 3796884
ginger.girl.hut => professor.hut: 3658712
fileserver.copyroom.hut: 28700112
fileserver.copyroom.hut => gilligan.crew.hut: 4605416
fileserver.copyroom.hut => laser3.copyroom.hut: 4370432
fileserver.copyroom.hut => fileserver.copyroom.hut: 4104120
fileserver.copyroom.hut => professor.hut: 4009484
fileserver.copyroom.hut => maryann.girl.hut: 3959476
fileserver.copyroom.hut => ginger.girl.hut: 3826552
fileserver.copyroom.hut => skipper.crew.hut: 3824632
skipper.crew.hut: 28416260
skipper.crew.hut => gilligan.crew.hut: 4391528
skipper.crew.hut => laser3.copyroom.hut: 4203184
skipper.crew.hut => ginger.girl.hut: 4166412
skipper.crew.hut => fileserver.copyroom.hut: 4041944
skipper.crew.hut => maryann.girl.hut: 3938764
skipper.crew.hut => skipper.crew.hut: 3856648
skipper.crew.hut => professor.hut: 3817780
laser3.copyroom.hut: 27794060
laser3.copyroom.hut => laser3.copyroom.hut: 4179268
laser3.copyroom.hut => skipper.crew.hut: 4148364
laser3.copyroom.hut => gilligan.crew.hut: 4119172
laser3.copyroom.hut => fileserver.copyroom.hut: 4028136
laser3.copyroom.hut => professor.hut: 3817932
laser3.copyroom.hut => ginger.girl.hut: 3808004
laser3.copyroom.hut => maryann.girl.hut: 3693184
% ./sample1.pl coconet.dat
professor.hut: 36914150
professor.hut => maryann.girl.hut: 5614735
professor.hut => professor.hut: 5570870
professor.hut => skipper.crew.hut: 5378465
professor.hut => gilligan.crew.hut: 5367785
professor.hut => ginger.girl.hut: 5236250
professor.hut => laser3.copyroom.hut: 5091475
professor.hut => fileserver.copyroom.hut: 4654570
gilligan.crew.hut: 36188190
gilligan.crew.hut => maryann.girl.hut: 6382885
gilligan.crew.hut => laser3.copyroom.hut: 5139000
gilligan.crew.hut => professor.hut: 5068110
gilligan.crew.hut => ginger.girl.hut: 5063615
gilligan.crew.hut => fileserver.copyroom.hut: 5031995
gilligan.crew.hut => skipper.crew.hut: 4833300
gilligan.crew.hut => gilligan.crew.hut: 4669285
maryann.girl.hut: 36179390
maryann.girl.hut => fileserver.copyroom.hut: 5702665
maryann.girl.hut => gilligan.crew.hut: 5610245
maryann.girl.hut => ginger.girl.hut: 5327900
maryann.girl.hut => skipper.crew.hut: 5009350
maryann.girl.hut => laser3.copyroom.hut: 4931145
maryann.girl.hut => maryann.girl.hut: 4826215
maryann.girl.hut => professor.hut: 4771870
ginger.girl.hut: 36128120
ginger.girl.hut => ginger.girl.hut: 5760100
ginger.girl.hut => skipper.crew.hut: 5598830
ginger.girl.hut => laser3.copyroom.hut: 5390750
ginger.girl.hut => maryann.girl.hut: 5092740
ginger.girl.hut => gilligan.crew.hut: 4966205
ginger.girl.hut => fileserver.copyroom.hut: 4746105
ginger.girl.hut => professor.hut: 4573390
fileserver.copyroom.hut: 35875140
fileserver.copyroom.hut => gilligan.crew.hut: 5756770
fileserver.copyroom.hut => laser3.copyroom.hut: 5463040
fileserver.copyroom.hut => fileserver.copyroom.hut: 5130150
fileserver.copyroom.hut => professor.hut: 5011855
fileserver.copyroom.hut => maryann.girl.hut: 4949345
fileserver.copyroom.hut => ginger.girl.hut: 4783190
fileserver.copyroom.hut => skipper.crew.hut: 4780790
skipper.crew.hut: 35520325
skipper.crew.hut => gilligan.crew.hut: 5489410
skipper.crew.hut => laser3.copyroom.hut: 5253980
skipper.crew.hut => ginger.girl.hut: 5208015
skipper.crew.hut => fileserver.copyroom.hut: 5052430
skipper.crew.hut => maryann.girl.hut: 4923455
skipper.crew.hut => skipper.crew.hut: 4820810
skipper.crew.hut => professor.hut: 4772225
laser3.copyroom.hut: 34742575
laser3.copyroom.hut => laser3.copyroom.hut: 5224085
laser3.copyroom.hut => skipper.crew.hut: 5185455
laser3.copyroom.hut => gilligan.crew.hut: 5148965
laser3.copyroom.hut => fileserver.copyroom.hut: 5035170
laser3.copyroom.hut => professor.hut: 4772415
laser3.copyroom.hut => ginger.girl.hut: 4760005
laser3.copyroom.hut => maryann.girl.hut: 4616480
% 

0 コメント:

コメントを投稿