如何从哈希值中删除所有换行符?

时间:2009-06-29 15:10:00

标签: regex perl replace

我尝试从哈希值中删除所有换行符(\n):

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


                           newline Test end ");

如何从%var_h的值中删除所有新行?

我试过了s/\\n//g,但我无法让它发挥作用。

3 个答案:

答案 0 :(得分:13)

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

应该这样做。

答案 1 :(得分: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;

答案 2 :(得分:3)

所有其他解决方案都会从所有哈希值中删除\ n。

我不确定这是否是必需的。

所以只从这一个值中删除:

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

技术上s / \ n // g应该足够了,但我养成了添加\ r的习惯?在它之前,它也将处理Windows风格的新行。