从文件中获取模式

从文件中获取模式

我有一个以下格式的文本文件。我想每次选择一个实例(行ABCMNR)并处理相应的行和列。

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";

相关内容