我在调用一个类似于下面的测试的只有一个字母的 sub 时遇到了问题。而且我无法找到一些允许字母而不是这里的逻辑。有没有?我明白为什么sub m是一个坏主意,因为它与m(regex), 等价的/regex/. 但为什么是其他人?
在下面的测试中,a、D、E、F 都可以。其余的syntax error根据 perl v5.26 和 v5.30(我检查的唯一两个版本)
perl -le'sub a{3*pop} print "a: ",a(7)-a(5)' #prints 6
perl -le'sub b{3*pop} print "b: ",b(7)-b(5)' #syntax error
perl -le'sub c{3*pop} print "c: ",c(7)-c(5)' #syntax error
perl -le'sub d{3*pop} print "d: ",d(7)-d(5)' #syntax error
perl -le'sub e{3*pop} print "e: ",e(7)-e(5)' #syntax error
perl -le'sub f{3*pop} print "f: ",f(7)-f(5)' #syntax error
perl -le'sub A{3*pop} print "A: ",A(7)-A(5)' #syntax error
perl -le'sub B{3*pop} print "B: ",B(7)-B(5)' #syntax error
perl -le'sub C{3*pop} print "C: ",C(7)-C(5)' #syntax error
perl -le'sub D{3*pop} print "D: ",D(7)-D(5)' #prints 6
perl -le'sub E{3*pop} print "E: ",E(7)-E(5)' #prints 6
perl -le'sub F{3*pop} print "F: ",F(7)-F(5)' #prints 6
perl -le'sub b{3*pop} print "&b: ",b(7)-&b(5)' #prints 6
perl -le'sub b{3*pop} print " b: ",b(7)- b(5)' #prints 6
perl -le'sub m{3*pop} print "m: ",m(7)-m(5)' #prints 0
Run Code Online (Sandbox Code Playgroud)