2009-06-29 58 views
1

我試圖從一個哈希值刪除所有換行符(\n):如何從散列值中刪除所有換行符?

my %var_h = ( "ID" => " This is Test 
          This is new line TEST 


          newline Test end "); 

我怎樣才能把的%var_h值所有新線?

我試過s/\\n//g但我無法讓它工作。

+1

我現在看到你的問題是當你不想成爲的時候你正在逃避'\ n'。 (除非這是一個錯字。) – Telemachus 2009-06-29 20:17:14

回答

13
s:\n::g for values %var_h; 

應該做的伎倆。

4

你在做什麼替代?你似乎要修復只值,所以我會用values關鍵字:

for my $value (values %var_h) { 
    $value =~ s/\n//g; 
} 

的替代(在OP的要求)是使用地圖和一個片,雖然我覺得少了很多明確的:

@var_h{keys %var_h} = map { s/\n//g } values %var_h; 
+0

帶散列值.. – joe 2009-06-29 15:18:47

+0

有沒有其他方法可以做到這一點 – joe 2009-06-29 15:19:23

+0

我添加了第二種方法。但是你是否想要一個不使用`values`的方法? – Telemachus 2009-06-29 15:34:10

3

所有其他解決方案從所有散列值中刪除\ n。

我不確定這是否是必需的。

所以僅從這一個值,你必須刪除:

$var_h{'ID'} =~ s/\r?\n//g; 

技術上S/\ n // g ^應該是足夠的,但我有加\ r的習慣嗎?在它之前,所以它也會處理Windows風格的新行。

相關問題