Perl脚本不会在相对路径中运行下标

bak*_*lap 0 linux perl path relative-path absolute-path

我有一个perl脚本:run.pl,每分钟都被cron调用.

run.pl唯一要做的就是调用另外两个脚本:download.pl和parse.pl:

#!/usr/bin/perl
use warnings;
use strict;

do 'download.pl';
do 'parse.pl';
print "done!\n";
Run Code Online (Sandbox Code Playgroud)

在download.pl和parse.pl两种打印与"下载完成"和"做了分析:"现在我把脚本输出到/var/log/script.log并检查脚本运行.

run.pl脚本运行正常,它输出"done!" 到日志文件.但是没有调用其他两个脚本.我认为这是一个相对路径问题,它在我使用绝对路径时起作用.

但这就是问题,脚本在测试阶段并且每次都改变路径,总是改变绝对路径会很麻烦.

有没有办法让脚本从相对路径运行?

编辑:当我自己从命令行运行"perl run.pl"时,它运行脚本没有问题.

tch*_*ist 5

嗯,你为什么用do?你知道,那不会"召唤"一个节目!

这些库模块或程序是?

此外,预计会有节目$ENV{PATH},而预计会有图书馆@INC.这些几乎肯定是不同的东西.

我的建议是:

  1. 要调用另一个程序$ENV{PATH},使用system()或反引号.
  2. 要加载库@INC,请使用requireuse.
  3. 保留do FILE到异国情调的巫术目的几乎肯定不适用于此.