首页 > 解决方案 > “* *”在这个 Perl 脚本中的作用是什么?

问题描述

我有这个 shell 脚本:

eval{print "Just ";} * * {print "Another ";} * * {print "Perl ";} * * {print "Hacker\n";}

和更多变体:

@${print "Just ";} * * {print "Another ";} * * {print "Perl ";} * * {print "Hacker\n";}
$${print "Just ";} * * {print "Another ";} * * {print "Perl ";} * * {print "Hacker\n";}
do{print "Just ";} * * {print "Another ";} * * {print "Perl ";} * * {print "Hacker\n";}
$#{print "Just ";} * * {print "Another ";} * * {print "Perl ";} * * {print "Hacker\n";}

做什么* *?(如果我更改* *为 ,它也可以工作& &。)

标签: perl

解决方案


*每对中的第一个是乘法;第二个是全局取消引用。所以没什么用处。

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


推荐阅读