2017-08-03 71 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