다음 형식의 텍스트 파일이 있습니다. 매번 하나의 인스턴스(행 ABC
~ ) 를 선택하고 해당 행과 열을 처리하고 싶습니다 .MNR
ABC 12 20150911 121 005 001
BBC AUX BUX 34 70U 1 ? ? ? ? ? ? ?
AXM B 300
HDG D 34 ? ? ? ? ? ?
XLG H 43 1 003 ? ? ? ? ?
MNR R 05 0 ? 5 ? ? ? ?
ABC 10 20150910 121 005 001
BBC AUX BUX 34 70U 1 ? ? ? ? ? ? ?
AXM B 500
HDG D 30 ? ? ? ? ? ?
XLG H 83 1 003 09 ? ? ? ?
MNR R 09 0 ? 5 ? ? ? ?
ABC 12 20150911 121 005 001
BBC AUX BUX 34 70U 1 ? ? ? ? ? ? ?
AXM B 380
HDG D 34 43 ? ? ? ? ?
XLG H 22 1 003 ? ? ? ? ?
MNR R 05 0 1 5 ? ? ? ?
답변1
물론 해시 배열로 구문 분석할 수 있지만 그 다음에는 어떻게 될까요?
#!/usr/bin/env perl
use strict;
use warnings;
my @abcs;
while (<>) {
my ($name, @values) = split ' ';
if (m/^ABC\s/) {
push @abcs, { $name => \@values }
} else {
$abcs[-1]->{$name} = \@values;
}
}
use Data::Dumper; warn Dumper \@abcs;
print $abcs[0]{BBC}[3], "\n";