代码之家  ›  专栏  ›  技术社区  ›  69 420 1970

“**”在这个Perl脚本中扮演什么角色?

  •  2
  • 69 420 1970  · 技术社区  · 7 年前

    我有以下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";}
    

    什么是 * * 做(如果我改变,它也会起作用 ** & & .)

    1 回复  |  直到 5 年前
        1
  •  3
  •   ysth    7 年前

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

    具有 & & 第一个是按位and,第二个是子例程解引用(and调用)。我不知道为什么使用规范真值(由print返回)作为代码引用并调用它不会出错;我早就料到了 &{!0} 要出错,请执行以下操作 &{"1"} 用于 Undefined subroutine &main::1 ;相反,这似乎是一个禁止的行动。