首页 > 解决方案 > 如何在perl中将左侧数据拆分为键,右侧数据询问值

问题描述

我的输入文件:

Lin :202020 123 455
Star :21334 1233 555

我试图将 Lin & Star 拆分为键,将其余数字拆分为值。但是,我得到这样的输出:

'202020 123 455 Star' => undef,

我的预期输出:

$VAR1 = {
'Lin' =>'202020 123 455',
'Star'=>'21334 1233 555'
}

我的代码:

use strict;
use warnings;

use Data::Dumper;
.
.
.
.
while($lines)
{
my %hash = split /[:]/,$lines;
print Dumper (%hash);
last;
}

标签: perl

解决方案


您的代码存在问题:

  1. 我们不知道什么$lines
  2. while ($lines)没有任何意义
  3. 您正在重新初始化%hash循环的每次迭代
  4. last没有任何意义

解决方案:

use strict;
use warnings;

use Data::Dumper;

my %hash;

while (<DATA>) {
    chomp;
    my @parts = split(/\s*:\s*/);
    $hash{$parts[0]} = $parts[1];
}

print Dumper(\%hash);

__DATA__
Lin :202020 123 455
Star :21334 1233 555

推荐阅读