如何在perl中将左侧数据拆分为键,将右侧数据拆分为ask值
我的输入文件:如何在perl中将左侧数据拆分为键,将右侧数据拆分为ask值,perl,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::D
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;
}
代码的问题:
$lines
while($line)
没有任何意义%hash
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
使用严格;
使用警告;
使用数据::转储程序;
我的%hash;
而(){
咀嚼;
my@parts=split(/\s*:\s*/);
$hash{$parts[0]}=$parts[1];
}
打印转储程序(\%hash);
__资料__
林:202020 123 455
星星:21334123555
使用5.18.2;
严格使用;
使用警告;
使用数据::转储程序;
my@Data=(“林:202020 123 455”,“星:21334 1233 555”);
我的%hash=map{(split(':'))[0]=>(split(':'))[1]}@Data;#您还可以使用而不是@Data
打印转储程序(\%hash);
显示设置$行及其内容的代码您可以发布您的真实代码吗?我可能会在拆分中添加一些可选的空格:/\s*:\s*/
,因为空格会在所需的输出中消失。@briandfoy这很公平。编辑了我的答案来解释这一点。
use 5.18.2;
use strict ;
use warnings ;
use Data::Dumper;
my @Data = ( "Lin :202020 123 455" , "Star :21334 1233 555" ) ;
my %hash = map { (split(':'))[0] => (split(':'))[1] } @Data ; # you can also use <STDIN> instead of @Data
print Dumper(\%hash);