Perl的HelloWorld示例在未指定use 5.30.0时给出了两个错误

Perl的HelloWorld示例在未指定use 5.30.0时给出了两个错误,perl,version,Perl,Version,新手:所以今天我开始学习Perl的教程,在开始使用之前我一直做得很好 有人能解释一下,当省略这个版本时,Perl的默认值是什么吗 当我把使用5.30.0的值;该示例将运行。但是,如果我根本没有指定行,我会根据main和sayit调用的位置得到以下两个错误 第一个错误发生在以下情况下:;说你好::说吧。。。在文件的顶部 找不到对象方法say via包hello::sayit也许您忘记加载hello::sayit了?在helloWorld.pl第7行 第二个错误发生在包的主目录中;说你好::说吧。。

新手:所以今天我开始学习Perl的教程,在开始使用之前我一直做得很好

有人能解释一下,当省略这个版本时,Perl的默认值是什么吗

当我把使用5.30.0的值;该示例将运行。但是,如果我根本没有指定行,我会根据main和sayit调用的位置得到以下两个错误

第一个错误发生在以下情况下:;说你好::说吧。。。在文件的顶部

找不到对象方法say via包hello::sayit也许您忘记加载hello::sayit了?在helloWorld.pl第7行

第二个错误发生在包的主目录中;说你好::说吧。。。在文件的底部

Bareword在helloWorld.pl第20行的say hello::sayit附近找到了运算符期望的位置

有人能解释一下,当省略这个版本时,Perl的默认值是什么吗

使用版本;它有三个目的:

它执行Perl版本的编译时检查。 [仅当版本为v5.10+]它启用功能,就像使用功能:版本;已指定。 [仅当版本为v5.12+]它启用strictures,就像使用strict一样;已指定。 默认情况下,不执行任何版本检查,也不启用任何或

在这里,我将解释为什么您发布的代码片段会导致错误

当say被添加到Perl中时,向后兼容性阻止了它在默认情况下全局可用。它会破坏脚本和模块,其中包含一个名为say的子模块。因此,在使用say之前,必须采取措施使其可用

可以使用use feature qw say;使say可用

say也可以使用use 5.10.0提供;更高,因为这为您启用了say功能。这就是为什么使用5.30.0;为你工作

或者,不需要启用该功能就可以使用CORE::say而不是say。这需要5.12+

$perl-e'say foo' 在say foo附近的-e行1处找到运算符所需的字符串 你需要事先声明吗? 在-e行1,say foo附近出现语法错误 由于编译错误,-e的执行已中止。 $perl-e'use特性qw-say;说“福” 福 $perl-e'use 5.10.0;说“福” 福 $perl-e'CORE::say foo' 福 这是

有人能解释一下,当省略这个版本时,Perl的默认值是什么吗

使用版本;它有三个目的:

它执行Perl版本的编译时检查。 [仅当版本为v5.10+]它启用功能,就像使用功能:版本;已指定。 [仅当版本为v5.12+]它启用strictures,就像使用strict一样;已指定。 默认情况下,不执行任何版本检查,也不启用任何或

在这里,我将解释为什么您发布的代码片段会导致错误

当say被添加到Perl中时,向后兼容性阻止了它在默认情况下全局可用。它会破坏脚本和模块,其中包含一个名为say的子模块。因此,在使用say之前,必须采取措施使其可用

可以使用use feature qw say;使say可用

say也可以使用use 5.10.0提供;更高,因为这为您启用了say功能。这就是为什么使用5.30.0;为你工作

或者,不需要启用该功能就可以使用CORE::say而不是say。这需要5.12+

$perl-e'say foo' 在say foo附近的-e行1处找到运算符所需的字符串 你需要事先声明吗? 在-e行1,say foo附近出现语法错误 由于编译错误,-e的执行已中止。 $perl-e'use特性qw-say;说“福” 福 $perl-e'use 5.10.0;说“福” 福 $perl-e'CORE::say foo' 福
这是。

您正在运行什么版本的Perl?键入perl-version。use命令应该只需要一个最小值,还可能指定一个特定的兼容性级别,就像say被引入Perl时一样。默认兼容性级别不得包括(例如)。如果不想包含使用行,请尝试打印,而不是说。尝试使用功能qwsay。有关更多信息,请参阅我安装的5.30.0版。您正在运行哪个版本的Perl?键入perl-version。use命令应该只需要一个最小值,还可能指定一个特定的兼容性级别,就像say被引入Perl时一样。默认兼容性级别不得包括(例如)。如果不想包含使用行,请尝试打印,而不是说。尝试使用功能qwsay。有关更多信息,请参阅我安装的5.30.0版。
#!/usr/bin/perl
use strict;
#use warnings;
use warnings FATAL => 'all';
# default namespace is main
package main;
say hello::sayit();
say world::sayit();

# new namespace called hello
package hello;
sub sayit {
    return "hello";
}

# new namespace called world
package world;
sub sayit {
    return "world";
}
#!/usr/bin/perl
use strict;
#use warnings;
use warnings FATAL => 'all';

# new namespace called hello
package hello;
sub sayit {
    return "hello";
}

# new namespace called world
package world;
sub sayit {
    return "world";
}

# default namespace is main
package main;
say hello::sayit();
say world::sayit();