我尝试从哈希值中删除所有换行符(\n
):
my %var_h = ( "ID" => " This is Test
This is new line TEST
newline Test end ");
如何从%var_h
的值中删除所有新行?
我试过了s/\\n//g
,但我无法让它发挥作用。
答案 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风格的新行。