Perl:按行加载数据
Perl: Load data by row
我正在继续我的 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
下一步是将从文件中加载的数据放入数组中,然后放入哈希中,使其可以按行排序,例如排序输出以找出属于特定端口号的所有信息。
我的问题是:将此数据加载到数组中然后进行哈希处理以使其对输出可访问和排序的正确方法是什么?
我认为您需要 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;
我正在继续我的 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
下一步是将从文件中加载的数据放入数组中,然后放入哈希中,使其可以按行排序,例如排序输出以找出属于特定端口号的所有信息。
我的问题是:将此数据加载到数组中然后进行哈希处理以使其对输出可访问和排序的正确方法是什么?
我认为您需要 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;