Perl は初めてで、古い Perl Web サイトを更新しています。すべての.pl
ファイルの先頭に次の行があるようです。
do "func.inc";
そこで、このファイルを使用して、グローバルに使用するサブルーチンにタグを付けることができると考えました。
株式会社ファンク
#!/usr/bin/perl
sub foobar
{
return "Hello world";
}
index.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
、Web サイト全体で使用されているサブのトーンが既に存在します。ただし、スクリプトは Linux 運用環境では機能しますが、Windows 7 開発環境では機能しません (私は ActivePerl を使用しています)。
アップデート:
ファイルが含まれていないようです。ファイルが絶対パスを使用して含まれている場合、サブは機能します...
do "C:/path/to/func.inc";
...そのため、ローカルの開発環境では相対パスが機能しないように見えますが、運用環境では機能します。しかし、私の開発マシンの絶対パスはライブサーバーでは機能しないため、これは私にとっては良くありません。
do
Windows 7 開発マシンで相対パスを使用して作業するにはどうすればよいですか?
更新 2:
Perl-T
スイッチを使用していました。残念ながら、これは「。」を削除します。@INC からのパスなので、 に相対パスを使用できなくなりますdo
。このスイッチを削除したところ、古いコードが機能するようになりました。これが良い習慣ではないことは承知していますが、残念ながら古いコードで作業しているため、仕方がないようです。