Perl引号仅包含数组中的字符串

时间:2017-08-03 08:16:24

标签: perl

我需要将数字以外的单引号放在数组中。

我尝试了以下代码,但它无法正常工作。任何人都可以帮我解决。

$data = join ',', map { /'\w+'/ } @$row[0..3];

输入/输出:

Input :
[1,string test, value test, 5]
Output:
(1,'string test', 'value test', 5)

1 个答案:

答案 0 :(得分:4)

''放置在其中没有单个数字的元素周围

my $data = join ',', map { /[0-9]/ ? $_ : "'${_}'" } @$row[0..3];

其中string 10 test没有被引用。

或者,只留下不带引号的纯整数

my $data = join ',', map { /[^0-9]/ ? "'${_}'" : $_ } @$row[0..3];

引用其中带有数字的字符串,如上例所示。

对于非整数,有Scalar::Util::looks_like_number

use Scalar::Util 'looks_like_number';

my $data = join ',', map { looks_like_number($_) ? $_ : "'${_}'" } @$row[0..3];

当然对于第二种情况(整数)也适用。