3

我试图用单引号将我的哈希中的所有值括起来。这是我的代码。

    foreach(values(%properties_hash))
    {
            print "'".$_."'\n";
    }

现在我正在打印。我将如何实际增加价值。这也打印

'logs
'format/systemout-2010-format.txt
'analyze

它只打印第一个'。为什么会这样?

谢谢!

4

3 回答 3

7

您的代码正在运行。

my %h = (
        'a' => 1,
        'b' => 2,
        'c' => 3,
        'd' => 4,
);

foreach(values(%h)) {
        print "'".$_."'\n";
}

印刷

'3'
'1'
'2'
'4'

您的字符串可能以“\r”结尾,因此结尾“'”打印在第一个“'”上,因此看不到最后一个撇号。尝试:

foreach(values(%h)) {
        s/[\r\n]//g;
        print "'".$_."'\n";
}
于 2012-07-19T18:41:54.957 回答
1

这个怎么样?

foreach (keys %properties_hash) {
  $properties_hash{$_} = "'$properties_hash{$_}'\n";
}
于 2012-07-19T18:33:41.710 回答
0
for (values %properties_hash) {
    $_ = "'$_'";
}

但你为什么要这样做?

请注意,如果任何值中包含撇号,这将不会产生正确引用的字符串。

至于您缺少的报价,也许这些字符串中有回车符,而第二个报价覆盖了第一个?

于 2012-07-19T18:36:36.887 回答