파일에서 패턴 가져오기

파일에서 패턴 가져오기

다음 형식의 텍스트 파일이 있습니다. 매번 하나의 인스턴스(행 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";

관련 정보