Perl:按行加载数据

时间:2015-04-27 23:53:51

标签: arrays perl file hash

我正在继续我的Perl学习。

在这种情况下,我正在尝试将.txt文件中的数据加载到数组中。我的脚本生成netstat输出,如下所示:

Proto Recv-Q Send-Q Local Address    Foreign Address         State       PID/Program name
tcp     0      0 0.0.0.0:3790        0.0.0.0:*               LISTEN      7550/nginx.conf 
tcp     0      0 127.0.1.1:53        0.0.0.0:*               LISTEN      1271/dnsmasq    
tcp     0      0 127.0.0.1:631       0.0.0.0:*               LISTEN      24202/cupsd 

下一步是将从文件加载的数据放入数组然后放入哈希,使其可以按行排序,例如排序输出以查找属于特定端口号的所有信息。

我的问题是:将这些数据加载到数组然后散列以使其可访问并可对输出进行排序的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为你需要AoH(哈希数组)。之后,您可以使用自定义sort获得所需的一切:

my @records = [
 { Proto => "tcp", 'Recv-Q' => 0, ..., 'Local Address' => "0.0.0.0:3790", ..., State => "Listen", ... },
 { Proto => "tcp", 'Recv-Q' => 0, ..., 'Local Address' => "127.0.1.1:53", ..., State => "Listen", ... },
 { Proto => "tcp", 'Recv-Q' => 0, ..., 'Local Address' => "127.0.0.1:631", ..., State => "Listen", ... },
];

my @records_sorted_by_state = sort { $a->{State} cmp $b->{State} } @records;