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

sid*_*com 1 perl stringification

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

$string = "$v";
Run Code Online (Sandbox Code Playgroud)

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

$string = '' . $v;
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 7

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

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

我是否将变量放在双引号中会有所不同

代码生成的代码是不同的.

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

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

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

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

   $v = bless({});
   "$v";
   "".$v;
'
stringified
concatenated
Run Code Online (Sandbox Code Playgroud)

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