2015-03-31 64 views
-1

我試圖按照this tutorial爲我自己的代碼,它現在基本上將一個值讀入一個標量中,該標量被推入一個名爲states的數組中。但是,它並沒有像教程中那樣正確地哈希函數,我相信它是因爲數組的內容沒有被正確引用。向perl中的數組中的所有元素添加引號

我已經試過

foreach (@states) 
{ 
     q($_); 
} 

push @states, q($key); 

但既不產生所需的輸出。目前我的輸出顯示爲

NY, NJ, MI , NJ 

使用

print join(", ", @states); 

時,我希望它顯示

'NY', 'NJ', 'MI' , 'NJ' 
+0

也@keys這裏代表標量值IM加入到州(如紐約州,新澤西州等) – Zee 2015-03-31 22:54:14

回答

0

要添加身邊,您可以使用雙引號字符串插值值報價:

"'$_'" 

或者你可以使用字符串連接:

"'".$_."'" 

所以,你可以寫你的foreach循環如下:

foreach (@states) { 
    $_ = "'$_'"; 
} 

注意$_必須分配,循環否則身體有沒有影響(這你的q($_);代碼就是這種情況)。

完整的示例:

use strict; 
use warnings; 

my @states = qw(NY NJ MI NJ); 

foreach (@states) { 
    $_ = "'$_'"; 
} 

print(join(', ', @states)); 

'NY', 'NJ', 'MI', 'NJ' 
+0

第一種方法奏效!謝謝! – Zee 2015-03-31 23:07:49

+0

我很困惑。誰低估了我的答案?而且,更重要的是,爲什麼? – bgoldst 2015-03-31 23:47:54

1

取態,它們映射到引用的字符串,用逗號連接:

my @states = qw(NY NJ MI); 
print join ', ', map "'$_'", @states; 
+0

不幸的是即時通訊從文件中讀取它並將其存儲到標量中,所以我無法直接執行qw()方法 – Zee 2015-03-31 23:07:40

+1

但在您的問題中,您將看到您擁有@states數組;如果你不這樣做,請修改你的問題。 – ysth 2015-03-31 23:24:50