我是 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)。
更新:
看起来该文件未包含在内;如果使用绝对路径包含文件,则 sub 工作...
do "C:/path/to/func.inc";
...所以看起来相对路径不适用于我的本地开发环境,但它们可以在生产环境中工作。但这对我没有好处,因为我的开发机器上的绝对路径不适用于实时服务器。
如何do
在我的 Windows 7 开发机器上使用相对路径开始工作?
更新 2:
我正在使用 Perl-T
开关。不幸的是,这删除了“。” 来自@INC,因此阻止我们使用相对路径do
。我删除了这个开关,旧代码现在可以工作了。我知道这不是一个好习惯,但不幸的是我正在使用旧代码,所以我似乎别无选择。