perl <file.pl> 被执行,完全没有输出
perl <file.pl> gets executed with no output at all
我下载了一个用于生成语言模型的 perl 脚本 (http://www.speech.cs.cmu.edu/tools/download/quick_lm.pl)。
当我执行 perl quick_lm.pl
时,它就会终止。完全没有输出。
是的,我安装了 perl 并且 perl -v
工作得很好。
我制作了一个简单的 hello-world perl 脚本,它执行得很好。 [附在最后]
所以,我在 quick_lm.pl
的第一行包含 print "hello";
并尝试 perl quick_lm.pl
,仍然没有任何反应。
我什至尝试使用 chmod 777 quick_lm.pl
授予 quick_lm.pl
所有权限。现在,当我执行 ./quick_lm.pl
时,它给出了一个错误:
-bash: ./quick_lm.pl: /usr/local/bin/perl: bad interpreter: No such file or directory
我搜索了这个错误,几乎所有的解决方案都指向 windows CLRF,但与它们不同的是,我在 /usr/local/bin/perl
中没有 ^M
。另外,perl quick_lm.pl
应该还可以吧?
[bash.log]
someone@something:~/dictionary$ perl quick_lm.pl
someone@something:~/dictionary$ perl quick_lm.pl -s words.txt
someone@something:~/dictionary$ nano quick_lm.pl
someone@something:~/dictionary$ perl quick_lm.pl -s words.txt
someone@something:~/dictionary$ chmod 777 quick_lm.pl
someone@something:~/dictionary$ ./quick_lm.pl
-bash: ./quick_lm.pl: /usr/local/bin/perl: bad interpreter: No such file or directory
someone@something:~/dictionary$ cat new.pl
#!/usr/bin/perl -w
use strict;
print "Hello World\n";
someone@something:~/dictionary$ perl new.pl
Hello World
someone@something:~/dictionary$
[在 quick_lm.pl
的开头添加 print
并将其减少到最小的、可运行的问题演示之后。]
#!/usr/local/bin/perl -w
=POD
...license...
=END
use Getopt::Std;
print "hello world";
$VERBOSE = 1;
sub handler { local($sig) = @_;
print STDERR "quick_lm caught a SIG$sig -- dying\n";
exit(0);
}
foreach (qw(XCPU KILL TERM STOP)) { $SIG{$_} = \&handler; }
这不是完整的脚本,完整的脚本在第一行提到的 link 中。我不确定它是否与我的 perl 配置一样与文件相关。你可能已经猜到了,我对 perl 了解不多。
非常感谢您抽出时间提供帮助:)
-bash: ./quick_lm.pl: /usr/local/bin/perl: bad interpreter: No such file or directory
将 /usr/local/bin/perl
替换为 perl
的正确路径。这个路径可以从
perl -le'print $^X'
it simply terminates. No output at all.
=pod
指令指示内联文档的开始 ("POD")。 =cut
标记 POD 块的结束。
程序错误地使用=END
而不是=cut
来标记POD块的结束,因此Perl认为整个程序是一个大注释..将=END
替换为=cut
.
我下载了一个用于生成语言模型的 perl 脚本 (http://www.speech.cs.cmu.edu/tools/download/quick_lm.pl)。
当我执行 perl quick_lm.pl
时,它就会终止。完全没有输出。
是的,我安装了 perl 并且
perl -v
工作得很好。我制作了一个简单的 hello-world perl 脚本,它执行得很好。 [附在最后]
所以,我在
quick_lm.pl
的第一行包含print "hello";
并尝试perl quick_lm.pl
,仍然没有任何反应。
我什至尝试使用 chmod 777 quick_lm.pl
授予 quick_lm.pl
所有权限。现在,当我执行 ./quick_lm.pl
时,它给出了一个错误:
-bash: ./quick_lm.pl: /usr/local/bin/perl: bad interpreter: No such file or directory
我搜索了这个错误,几乎所有的解决方案都指向 windows CLRF,但与它们不同的是,我在 /usr/local/bin/perl
中没有 ^M
。另外,perl quick_lm.pl
应该还可以吧?
[bash.log]
someone@something:~/dictionary$ perl quick_lm.pl
someone@something:~/dictionary$ perl quick_lm.pl -s words.txt
someone@something:~/dictionary$ nano quick_lm.pl
someone@something:~/dictionary$ perl quick_lm.pl -s words.txt
someone@something:~/dictionary$ chmod 777 quick_lm.pl
someone@something:~/dictionary$ ./quick_lm.pl
-bash: ./quick_lm.pl: /usr/local/bin/perl: bad interpreter: No such file or directory
someone@something:~/dictionary$ cat new.pl
#!/usr/bin/perl -w
use strict;
print "Hello World\n";
someone@something:~/dictionary$ perl new.pl
Hello World
someone@something:~/dictionary$
[在 quick_lm.pl
的开头添加 print
并将其减少到最小的、可运行的问题演示之后。]
#!/usr/local/bin/perl -w
=POD
...license...
=END
use Getopt::Std;
print "hello world";
$VERBOSE = 1;
sub handler { local($sig) = @_;
print STDERR "quick_lm caught a SIG$sig -- dying\n";
exit(0);
}
foreach (qw(XCPU KILL TERM STOP)) { $SIG{$_} = \&handler; }
这不是完整的脚本,完整的脚本在第一行提到的 link 中。我不确定它是否与我的 perl 配置一样与文件相关。你可能已经猜到了,我对 perl 了解不多。
非常感谢您抽出时间提供帮助:)
-bash: ./quick_lm.pl: /usr/local/bin/perl: bad interpreter: No such file or directory
将 /usr/local/bin/perl
替换为 perl
的正确路径。这个路径可以从
perl -le'print $^X'
it simply terminates. No output at all.
=pod
指令指示内联文档的开始 ("POD")。 =cut
标记 POD 块的结束。
程序错误地使用=END
而不是=cut
来标记POD块的结束,因此Perl认为整个程序是一个大注释..将=END
替换为=cut
.