gpt4 book ai didi

perl - 在 Perl 中优雅地解析刚性数据

转载 作者:行者123 更新时间:2023-12-02 06:43:30 26 4
gpt4 key购买 nike

我正在处理一个基本上可以归结为如下内容的大型数据集:

my $input = q(
<foo>111</foo>
<foo>222</foo>
<foo>333</foo>
<foo></foo>
<foo>555</foo>
); # new-lines are either CR+LF, LF, or CR

基于上面的示例,我们假设以下约束生效:

  • 总会有 5 行数据。
  • 每行中的数据都包含在单个标记中,例如 <foo>...</foo> .
  • 数据将不包含嵌套标签。
  • 所有行都使用相同的标签(例如 foo )来包含它们的数据。

最终,以上述为数据源,我想得到类似这样的结果:

my %values = (
one => '111',
two => '222',
three => '333',
four => '',
five => '555'
);

这是我的尝试:

my @vals = $input =~ m!<foo>(.*?)</foo>!ig;

if (scalar @vals != 5) {
# panic
}

my %values = (
one => shift @vals,
two => shift @vals,
three => shift @vals,
four => shift @vals,
five => shift @vals
);

这可以按我的意愿工作,但是它看起来很丑而且不是很灵活。不幸的是,这是我目前能做的最好的事情,因为我是 Perl 的新手。

那么,考虑到上述限制,更优雅的方法是什么?

最佳答案

将两个数组合并成一个散列:

my @keys = qw/one two three/;
my @values = qw/alpha beta gamma/;

my %hash;
@hash{@keys} = @values;

关于perl - 在 Perl 中优雅地解析刚性数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4415364/

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