gpt4 book ai didi

perl - 要散列的分隔行的拆分列表

转载 作者:行者123 更新时间:2023-12-02 09:34:07 24 4
gpt4 key购买 nike

以下产生我想要的。

#!/usr/bin/env perl
use 5.020;
use warnings;
use Data::Dumper;

sub command {
<DATA>
#in the reality instead of the DATA I have
#qx(some weird shell command what produces output like in the DATA);

}
my @lines = grep { !/^\s*$/ } command();
chomp @lines;

my $data;

#how to write the following nicer - more compact, elegant, etc.. ;)
for my $line (@lines) {
my @arr = split /:/, $line;
$data->{$arr[0]}->{text} = $arr[1];
$data->{$arr[0]}->{par} = $arr[2];
$data->{$arr[0]}->{val} = $arr[3];
}
say Dumper $data;

__DATA__
line1:some text1:par1:val1
line2:some text2:par2:val2

line3:some text3:par3:val3

想知道如何以更perlish 的形式编写循环。 ;)

最佳答案

您可以分配给哈希切片:

for my $line (@lines) {
my ($id, @arr) = split /:/, $line;
@{ $data->{$id} }{qw{ text par val }} = @arr;
}

此外,使用以下代码代替 qx,这样您就不需要将所有行都存储在一个数组中:

open my $PIPE, '-|', 'command' or die $!;
while (<$PIPE>) {
# ...
}

关于perl - 要散列的分隔行的拆分列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29145988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com