2009-06-29 54 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风格的新行。

相关问题