私はこの形式のタブ区切りファイルを持っています:
Business System Name: OK_CR
Serial Numbr Service Name Program Name Epoch Start Time
------------ -------------------- -------------------- -------------------
GI1001TAA266 PPV 10 (50106) We Bought A Zoo Aug 14 2012 4:15AM
GI1002TB3596 PPV 5 (50101) Help, The (2011) Aug 14 2012 6:30PM
GI1002TDH825 PPV 2 (50098) Safe House Sep 7 2012 2:15AM
Business System Name: OK_SV
Serial Numbr Service Name Program Name Epoch Start Time
------------ -------------------- -------------------- -------------------
GI1001TAA266 PPV 10 (50106) We Bought A Zoo Aug 14 2012 4:15AM
GI1002TB3596 PPV 5 (50101) Help, The (2011) Aug 14 2012 6:30PM
GI1002TDH825 PPV 2 (50098) Safe House Sep 7 2012 2:15AM
ビジネス システム ヘッダーで区切られた日付ごとの行数をカウントしたいのですが、スクリプトの結果は次のようになります。
Business System Name: OK_CR
Aug 14: 2
Sep 7: 1
Business System Name: OK_SV
Aug 14: 2
Sep 7: 1
これまでのところ、ハッシュを作成しましたが、各日付をカウントし、各ビジネス システム ヘッダーの後にカウンターをリセットする方法に驚かされました。これは私のスクリプトです:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
open my $fh, '<', 'ppv.txt' or die $!;
my %data;
my $sect;
while (<$fh>) {
next if /^\s+/;
if (/^Business System Name:\s+(\w+)/) {
$sect = $1;
next;
}
#print "$sect\n";
if (defined $sect) {
next if /^Serial Numbr/;
next if /^------------/;
push @{ $data{$sect} }, $_;
}
}
print Dumper \%data;
これはスクリプトの結果です:
$VAR1 = {
'OK_CR' => [
'GI1001TAA266 PPV 10 (50106) We Bought A Zoo Aug 14 2012 4:15AM
',
'GI1002TB3596 PPV 5 (50101) Help, The (2011) Aug 14 2012 6:30PM
',
'GI1002TDH825 PPV 2 (50098) Safe House Sep 7 2012 2:15AM
'
],
'OK_SV' => [
'GI1001TAA266 PPV 10 (50106) We Bought A Zoo Aug 14 2012 4:15AM
',
'GI1002TB3596 PPV 5 (50101) Help, The (2011) Aug 14 2012 6:30PM
',
'GI1002TDH825 PPV 2 (50098) Safe House Sep 7 2012 2:15AM
'
]
};
ここから先に進む方法について何か考えはありますか?