gpt4 book ai didi

perl - 为什么在使用 `do` 函数时无法加载 Perl 库?

转载 作者:行者123 更新时间:2023-12-04 22:25:52 31 4
gpt4 key购买 nike

我是 Perl 的新手,我正在更新一个旧的 Perl 网站。每个 .pl 文件的顶部似乎都有这一行:

do "func.inc";
所以我想我可以使用这个文件来标记一个全局使用的子程序。
功能公司
#!/usr/bin/perl
sub foobar
{
return "Hello world";
}
索引.pl
#!/usr/bin/perl
do "func.inc";
print "Content-type: text/html\n\n";
print foobar();
但是,我收到此错误:
Undefined subroutine &main::foobar called at /path/to/index.pl line 4.
这两个文件都在同一个目录中,并且 func.inc 中已经有一些 subs 的音调,它们在整个网站中都被使用。但是,该脚本适用于 Linux 生产环境,但不适用于我的 Windows 7 开发环境(我使用的是 ActivePerl)。
更新:
看起来文件没有被包含;如果使用绝对路径包含文件,则子工作...
do "C:/path/to/func.inc";
...所以看起来相对路径不适用于我的本地开发环境,但它们可以在生产环境中工作。但这对我没有好处,因为我的开发机器上的绝对路径不适用于实时服务器。
如何在我的 Windows 7 开发机器上使用相对路径让 do 工作?
更新 2:
我正在使用 Perl -T 开关。不幸的是,这删除了“。”来自@INC,因此阻止我们使用 do 的相对路径。我删除了这个开关,旧代码现在可以工作了。我知道这不是一个好习惯,但不幸的是我正在使用旧代码,所以我似乎别无选择。

最佳答案

确保路径正确,使用:


#!/usr/bin/perl
require("func.inc");
print "Content-type: text/html\n\n";
print foobar();

关于perl - 为什么在使用 `do` 函数时无法加载 Perl 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036820/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com