当前位置:  开发笔记 > 编程语言 > 正文

Perl拆分并丢弃一行中的第一个元素

如何解决《Perl拆分并丢弃一行中的第一个元素》经验,为你挑选了1个好方法。

我有一些数据应该可以很容易地分成哈希.

以下代码旨在将字符串拆分为其对应的键/值对,并将输出存储在散列中.

码:

use Data::Dumper;

# create a test string
my $string = "thing1:data1thing2:data2thing3:data3";

# Doesn't split properly into a hash
my %hash = split m{(thing.):}, $string;
print Dumper(\%hash);

但是,在检查输出时,很明显该代码不能按预期工作.

输出:

$VAR1 = {
    'data3' => undef,
    ''      => 'thing1',
    'data2' => 'thing3',
    'data1' => 'thing2'
};

为了进一步研究这个问题,我将输出分成一个数组,然后打印出结果.

码:

# There is an extra blank element at the start of the array
my @data = split m{(thing.):}, $string;
for my $line (@data) {
    print "LINE: $line\n";
}

输出:

LINE:
LINE: thing1
LINE: data1
LINE: thing2
LINE: data2
LINE: thing3
LINE: data3

正如您所看到的那样,问题是split在数组的开头返回一个额外的空元素.


有什么办法可以将分割输出中的第一个元素丢弃并将其存储在一行的哈希中?

我知道我可以将输出存储在一个数组中然后只是移出第一个值并将数组存储在一个哈希中...但我只是好奇这是否可以一步完成.



1> bolav..:

my (undef, %hash) = split m{(thing.):}, $string; 将扔掉第一个值.


对于问题"我有什么方法可以抛弃分割输出中的第一个元素吗?" 我认为这是正确的答案.
如果数据是如此可预测的话,那么最好只是首先写一下`my%hash =(thing1 =>'data1',thing2 =>'data2',thing3 =>'data3')`
推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有