2017-08-03 62 views
1

我需要在数组中放置数字以外的单引号。在数组中只包含字符串的Perl引号

我试过下面的代码,但它不工作。任何人都可以帮我整理一下。

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

输入/输出:

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

回答

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]; 

什么的作品当然对于第二种情况(整数),以及。

+1

您也可以使用['Scalar :: Util :: looks_like_number'](https://metacpan.org/pod/Scalar::Util#looks_like_number)进行测试。 – melpomene

+0

@melpomene是的,你是对的,必须整理所有那些“其他”(不是整数)数字,不要加我。 – zdim

相关问题