说,有一个字符串"[1,2,3,4,5]"
,我怎么能把它改成一个数组引用[1,2,3,4,5]
呢?使用split
和重组数组是一种方法,但看起来应该有一种更简单的方法。
问问题
179 次
3 回答
5
eval
是最简单的方法
$string = "[1,2,3,4,5]";
$ref = eval $string;
但如果您无法控制$string
.
不过,您的输入字符串也是有效的 JSON,所以您可以说
use JSON;
$ref = decode_json( $string );
于 2013-11-07T23:47:41.037 回答
3
您可以使用eval
,但是当有问题的字符串来自不受信任的来源时,绝对应该避免这种情况。
否则你必须自己解析它:
my @arr = split(/\s*,\s*/, substr($string, 1, -1));
my $ref = \@arr;
于 2013-11-07T23:46:58.643 回答
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]
于 2013-11-08T02:23:46.563 回答