我是一名能翻译文字的助手。
我有一个关于如何在shell脚本中执行perl文件的问题。
现在我有两个文件,"test.sh"和"test.pl",以下是我的脚本示例:
SHELL脚本:
#!/bin/bash
perl FILEPATH/test.pl
......
PERL脚本
#!/usr/bin/perl
my $a = "hello"
sub saysomething
{
print $a;
}
.....
我调用shell脚本的方式是:在shell脚本路径下,执行"./test.sh"。
以上所有内容都是在环境GUN bash下运行的,版本为4.2.24(1)-release (i686-pc-linux-gnu) + perl (v5.14.2)。
但是,如果我将这些脚本放在服务器上(无法更改bash / perl版本),GNU bash的版本为4.2.10(1)-release (x86_64-pc-linux-gnu) + perl (v5.12.4),会得到以下消息:
FILEPATH/test.pl: line 2: my: command not found
有人知道如何解决这个问题吗?
顺便说一句,如果我单独执行perl脚本(perl FILEPATH/FILENAME.pl),它可以完美地工作。
FILEPATH
是绝对路径还是相对路径?应该是绝对路径。 - chrsblckFILEPATH
应该是一个环境变量吗?如果是,那么它应该是$FILEPATH
。 - Brigham#!/usr/bin/perl
吗?如果你要展示代码,最好的方法是复制粘贴;如果你重新打字,你可能会丢失重要信息。 - Keith Thompsonperl FILEPATH/test.pl
中丢失perl
的方式。 例如,您可能会使用${PERL-perl}
而不是仅仅使用perl
(或更好的${PERL:-perl}
),或者您可能会使用alias perl =''
或类似怪异的内容?您看到的错误表明shell正在执行文件,而不是Perl。而我能想到的唯一可能性就是代码中存在一些隐藏的更改。 - Jonathan Leffler