Perl脚本从crontab而不是命令行失败

kx5bkwkv  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(178)

我有一个perl脚本,它是设计来连接到一个MS SQL服务器数据库。它使用DBI模块。
由于某种原因,我可以从命令行执行脚本,它工作正常,但当我将它放入Crontab时,它失败了,并出现以下错误:
DBI对象版本1.627与/usr/lib 64/perl 5/ www.example.com第213行中的引导参数1.643不匹配DynaLoader.pm。开始失败--编译在/usr/local/lib 64/perl 5/DBI.pm第284行中中止。编译在/app/www/tools/GoSet/art_db_insert.pl第5行中的require中失败。BEGIN失败--编译在/app/www/tools/GoSet/art_db_insert中中止。P1线5。
我已经验证了我的“which perl”与脚本中的shebang行匹配。我还验证了如果我执行“perldoc -m DBI”,它将显示版本1.643。我不知道它从哪里获得版本1.627,也不知道为什么它可以从命令行工作,而不能从crontab工作。
我在crontab中有其他Perl脚本,它们工作正常,但这是唯一一个有错误的脚本(也是唯一一个使用DBI的脚本)。
有什么想法吗?
crontab行:
第一个

kmb7vmvb

kmb7vmvb1#

当你运行perl path/to/yourscript.pl时,shebang行被忽略。要让shebang行中定义的解释器运行脚本,它必须成为可执行的(chmod +x),然后作为./yourscript.plpath/to/yourscript.pl调用。
当文件作为位置参数传递给二进制文件时,shebang行只是被解析为常规注解,没有任何作用。

相关问题