代码之家  ›  专栏  ›  技术社区  ›  joe

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

  •  1
  • joe  · 技术社区  · 15 年前

    我试着去掉所有的换行符( \n )从哈希值:

    my %var_h = (  "ID"   => " This is Test 
                               This is new line TEST 
    
    
                               newline Test end ");
    

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

    我试过 s/\\n//g 但我不能让它工作。

    3 回复  |  直到 15 年前
        1
  •  13
  •   Massa    15 年前
    s:\n::g for values %var_h;
    

    应该有技巧。

        2
  •  4
  •   Telemachus MrJames    15 年前

    你在做什么换人?您似乎只想修复值,因此我将使用 values 关键词:

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

    另一种选择(应运营商的要求)是使用地图和切片,尽管我发现它不太清楚:

    @var_h{keys %var_h} = map { s/\n//g } values %var_h;
    
        3
  •  3
  •   user80168    15 年前

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

    我不确定是否需要。

    因此,要只从这个值中删除您拥有的:

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

    从技术上讲,s/\n//g应该足够,但我有添加的习惯\r?在此之前,它还将处理窗口样式的新行。