这个perl脚本中的角色是什么?* *?

时间:2018-04-26 20:13:22

标签: perl

有一个下一个perl脚本:

echo 'eval{print "Just ";} * * {print "Another ";} * * {print "Perl ";} * * {print "Hacker\n";}' | perl

以及更多变种:

echo '@${print "Just ";} * * {print "Another ";} * * {print "Perl ";} * * {print "Hacker\n";}' | perl

echo '$${print "Just ";} * * {print "Another ";} * * {print "Perl ";} * * {print "Hacker\n";}' | perl

echo 'do{print "Just ";} * * {print "Another ";} * * {print "Perl ";} * * {print "Hacker\n";}' | perl

echo '$#{print "Just ";} * * {print "Another ";} * * {print "Perl ";} * * {print "Hacker\n";}' | perl

请说,“* *”的角色是什么? (它也有效,如果* *改为&&。)

1 个答案:

答案 0 :(得分:3)

每对的第一个*是乘法;第二个是全局解除引用。所以没什么用的。

使用& &,第一个是按位,第二个是子程序取消引用(和调用)。我不知道为什么使用规范的真值(由print返回)作为代码引用并调用它不会出错;我希望&{!0}出现&{"1"}Undefined subroutine &main::1相同的错误;相反,它似乎是一个无操作。