Perl:字符串到数组引用?

时间:2013-11-07 23:42:13

标签: arrays perl

说,有一个字符串"[1,2,3,4,5]",如何将其更改为[1,2,3,4,5]的数组引用?使用split并重新组合数组是一种方法,但看起来应该有一种更简单的方法。

3 个答案:

答案 0 :(得分:5)

eval是最简单的方式

$string = "[1,2,3,4,5]";
$ref = eval $string;

但如果您无法控制$string的内容,则这是不安全的。

你的输入字符串也是有效的JSON,所以你可以说

use JSON;
$ref = decode_json( $string );

答案 1 :(得分:3)

您可以使用eval但是当相关字符串来自不受信任的来源时,绝对应该避免这种情况。

否则你必须自己解析它:

my @arr = split(/\s*,\s*/, substr($string, 1, -1));
my $ref = \@arr;

答案 2 :(得分:2)

如果可以,你真的应该避免eval。如果字符串来自程序外部,那么只需将eval应用于它就可以完成无法造成的损坏。

如果数组的内容只是数字,那么您可以使用正则表达式来提取所需的信息。

这是一个例子

use strict;
use warnings;

my $string = "[1,2,3,4,5]";
my $data   = [ $string =~ /\d+/g ];

use Data::Dump;
dd $data;

<强>输出

[1 .. 5]