如何在Perl中将数组转换为此指向数组?

时间:2015-05-15 13:55:57

标签: arrays perl data-structures

我正在尝试使用包Normalize,但我有数据在数组(@x)中,而不是包中需要进行规范化的一些指向数组。

将指向数组中的数据格式称为哈希

my %xx = ('1' => 22.595451, '2' => 20.089094, '3' => 17.380813); 

当前数据格式

my @x = qw/22.595451 20.089094 17.380813/; 

即。 ('22.595451', '20.089094', '17.380813')

如何将数据转换为指向数据结构?

3 个答案:

答案 0 :(得分:2)

您称之为“指向数组”的实际名称是哈希,它是一种关联数组

my %xx; $xx{$_} = $x[$_] for 0..$#x;

-OR -

my %xx = map { $_ => $x[$_] } 0..$#x;

也就是说,Borodin指出该模块的函数接受对数组的引用以及对哈希的引用。这意味着你不需要做

my %xx = map { $_ => $x[$_] } 0..$#x;
$norm->normalize_to_max(\%xx);

因为你可以简单地做

$norm->normalize_to_max(\@x);

答案 1 :(得分:2)

您可以通过引用传递数组,而不是使用哈希。喜欢这个

use strict;
use warnings;

use Normalize;

my @x = qw/ 22.595451 20.089094 17.380813 /;

my $norm = Normalize->new(round_to => 1e-16);

$norm->normalize_to_max(\@x);

print "$_\n" for @x;

将规范化@x的内容

答案 2 :(得分:2)

将数组转换为哈希的最简单方法。

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