Emm*_*tOT 0 arrays string perl hash
我有一个看起来像的字符串
This is sentence one.%%%0.3%%%0.6%%%This is sentence two.%%%0.4%%%0.9%%%
Run Code Online (Sandbox Code Playgroud)
百分号只是作为分隔符,我可以根据需要进行更改.
我需要最终得到这样的东西:
{
'This is sentence one' => [0.3, 0.6],
'This is sentence two' => [0.4, 0.9]
}
Run Code Online (Sandbox Code Playgroud)
我可以把它分成一个数组或哈希没有问题,唯一让我麻烦的是让每个第一个段成为一个键而每个其他段都成为一个数组的元素.了解perl,可能有一种非常有效的方法可以在一行中完成!
您需要将数据拆分为一个数组并逐个拉出三个项目,使用三个中的第一个作为键,其余部分作为数组引用
像这样
use strict;
use warnings 'all';
use Data::Dump;
my $str = 'This is sentence one.%%%0.3%%%0.6%%%This is sentence two.%%%0.4%%%0.9%%%';
my %data;
{
my @data = split /%%%/, $str;
while ( @data >= 3) {
my @item = splice @data, 0, 3;
$data{ shift @item } = \@item;
}
}
dd \%data;
Run Code Online (Sandbox Code Playgroud)
{
"This is sentence one." => [0.3, 0.6],
"This is sentence two." => [0.4, 0.9],
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |