我应该如何对变量进行字符串化?

时间:2014-11-28 13:33:03

标签: perl stringification

当我想要对变量进行字符串化时:我是否将变量放在双引号中会有所不同

$string = "$v";

或者我是否将变量与空字符串连接起来

$string = '' . $v;

1 个答案:

答案 0 :(得分:7)

  

当我想要对变量进行字符串化

所以从来没有?期望字符串的运算符将字符串化其操作数。人们需要明确地进行字符串化是非常罕见的。我想我曾经只做过一次。

  

是否将变量放在双引号

中会有所不同

代码生成的代码不同。

$ perl -MO=Concise,-exec -e'"$v"'
...
3  <#> gvsv[*v] s
4  <@> stringify[t2] vK/1
...

$ perl -MO=Concise,-exec -e'"".$v'
...
3  <$> const[PV ""] s
4  <#> gvsv[*v] s
5  <2> concat[t2] vK/2
...

这种差异对于具有重载运算符的对象很重要,这是您可能想要显式字符串化的少数几次之一。

$ perl -e'
   use overload
      q{""} => sub { print "stringified\n"; "" },
      "."   => sub { print "concatenated\n"; "" };

   $v = bless({});
   "$v";
   "".$v;
'
stringified
concatenated

对于大多数课程来说,它仍然会变得相同。您应该只遇到.并不意味着连接的类的问题。