Perl似乎需要一个外部模块来使用内置的sysopen
$ perl -e 'use strict subs; print sysopen(my $temp, "./myfile.txt", O_RDONLY);'
Bareword "O_RDONLY" not allowed while "strict subs" in use at -e line 1
如果你在命令行上运行它,你会得到那个错误。我明白为什么这是一个错误,解决方案是use Fnctl
但这是必须安装在盒子上的东西。人们对 Perl 有足够多的抱怨,我正试图给他们一个工具,(秘密地)展示 Perl 的有用性以及它(可能)有多么小麻烦。这没有帮助。
我正在尝试编写一个 Perl 实用程序,人们可以将其用作单个文件,而无需安装外部库。为什么内置需要外部模块?据我所知,O_RDONLY
可能是在不同的操作系统不同,但这样可能STDIN
,STDERR
和STDOUT
,但那些与使用use strict subs
。
回答
为什么内置需要外部模块?
Fcntl 不是外部模块。它是 Perl 附带的标准模块。如果加载失败,则表示 Perl 安装不正确。但是,如果您愿意,可以使用数值检查其值并使用它:perl -MFcntl -E 'say O_RDONLY'