这个问题可能很愚蠢。但是我才刚刚开始探索Perl。我正在使用Perl v5.16.2。我知道该say
声明已在5.10中引入。
#!/usr/bin/perl
say "Hello World!";
当我尝试运行上述程序时,出现以下错误:
$ ./helloPerl
String found where operator expected at ./helloPerl line 3, near "say "Hello World!""
(Do you need to predeclare say?)
syntax error at ./helloPerl line 3, near "say "Hello World!""
Execution of ./helloPerl aborted due to compilation errors.
但是,当我添加该语句时use 5.016;
,它为我提供了正确的输出。
#!/usr/bin/perl
use 5.016;
say "Hello World!";
我的疑问是,我使用的是perl v5.16.2,高于5.010。为什么我要use
在此处使用语句来提及Perl版本?
默认情况下不会启用可能破坏向后兼容性的功能。
在不破坏某些现有程序的情况下,通常不可能向Perl添加新语法。这种实用性提供了一种将风险最小化的方法。可以通过使用功能'foo'启用新的句法构造或旧构造的新语义,并且仅当适当的功能用法在范围内时才进行解析。(尽管如此,使用CORE ::前缀可以访问所有Perl关键字,而不管该编译指示如何。)
use
在版本号上,隐式启用所有功能,因为它还会对perl版本施加约束。因此say
,例如,您不会因未实施而被绊倒。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句