我需要将数字以外的单引号放在数组中。
我尝试了以下代码,但它无法正常工作。任何人都可以帮我解决。
$data = join ',', map { /'\w+'/ } @$row[0..3];
输入/输出:
Input :
[1,string test, value test, 5]
Output:
(1,'string test', 'value test', 5)
答案 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];
当然对于第二种情况(整数)也适用。