sid*_*com 1 perl stringification
当我想对变量进行字符串化时:是否将变量放在双引号中会有所不同
$string = "$v";
Run Code Online (Sandbox Code Playgroud)
或者我是否将变量与空字符串连接起来
$string = '' . $v;
Run Code Online (Sandbox Code Playgroud)
?
当我想要对变量进行字符串化时
从来没有?期望字符串的运算符将字符串化其操作数.人们需要明确地进行字符串化是非常罕见的.我想我曾经只做过一次.
我是否将变量放在双引号中会有所不同
代码生成的代码是不同的.
$ 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)
对于大多数课程来说,它仍然会变得相同.你应该只遇到一个类的问题,这.并不意味着连接.