当我运行Perl脚本时,为什么会出现'use:command not found'?

时间:2010-03-25 15:57:12

标签: perl

我是Perl的新手。我已经使用一个论坛中的以下代码连接到其中一个服务器。但抛出错误信息

[root@Cus]# cat tt.pl
#!/usr/bin/perl
use Net::Telnet;
$telnet = new Net::Telnet ( Timeout=>2, Errmode=>'die');
$telnet->open('10.0.0.28');
$telnet->waitfor('/login:/');
$telnet->print('administrator');
$telnet->waitfor('/Password:/');
$telnet->print('test');
$telnet->waitfor('/switch8-12>/');
$telnet->print('whoamI');
$output=$telnet->waitfor('/switch8-12>/');
print $output;

但抛出以下错误消息。

[root@Cus]# ./tt.pl
./tt.pl: line 3: use: command not found
./tt.pl: line 4: syntax error near unexpected token `('
./tt.pl: line 4: `$telnet = new Net::Telnet ( Timeout=>2, Errmode=>'die');'

7 个答案:

答案 0 :(得分:13)

我的猜测是你使用了一种不尊重#!行的奇怪的unix,并试图通过shell而不是perl来运行脚本。

可能发生这种情况的另一个原因是tt.pl以空行开头。 #!必须出现在文件的最开头。

尝试运行perl tt.pl,看看会发生什么。

答案 1 :(得分:4)

我有类似的错误消息,并发现原因是perl文件使用了错误的字符编码(不要问我为什么这对perl很重要)。 Perl安装正确,路径有序,脚本语法很完美(我甚至在一行“Hello World!”脚本中得到了“use:command not found”错误)。检查tt.pl是否为UTF8 no-BOM。

答案 2 :(得分:3)

正如一条评论所说“看起来在开头就有一个CR” 如果你绝望地在这里......
然后运行d2u script.pl

d2u - > dos to unix。

答案 3 :(得分:1)

我没有在脚本顶部看到这些行,对于所有perl模块和脚本都是必需的

use strict;
use warnings;

你没有说这是在运行哪个环境 - 你在Linux上使用bash吗?无论你使用什么shell都不理解shebang(#!/usr/bin/perl),并试图用自己的语言执行脚本而不是调用Perl来运行它。

尝试使用/ bin / bash,然后你的shebang线就可以了。或者,只需显式调用perl:perl tt.pl

答案 4 :(得分:0)

如果/usr/bin/perl文件为空

,则会发生同样的情况

答案 5 :(得分:0)

我遇到了同样的问题,发现#!/ usr / bin / perl没有perl。 perl -v或/ usr / bin / perl -v都没有工作。

我为perl做了一个find / -name,然后从/ usr / bin添加了一个符号链接到实际位置

perl -v -bash:perl:找不到命令 / usr / bin / perl -v -bash:/ usr / bin / perl:没有这样的文件或目录

find / -name perl 的/ opt / ISS /斌/的perl5 / perl的 的/ opt / ISS / bin中/ perl的

ln -s / opt / ISS / bin / perl / usr / bin / perl perl -v

这是为x86_64-linux构建的perl 5,版本14,subversion 1(v5.14.1)

版权所有1987-2011,Larry Wall

Perl只能根据艺术许可或条款的条款进行复制 GNU通用公共许可证,可以在Perl 5源代码包中找到。

应该在上面找到Perl的完整文档,包括FAQ列表 这个系统使用“man perl”或“perldoc perl”。如果你有权访问 互联网,将您的浏览器指向http://www.perl.org/,即Perl主页。

/ usr / bin / perl -v

这是为x86_64-linux构建的perl 5,版本14,subversion 1(v5.14.1)

版权所有1987-2011,Larry Wall

Perl只能根据艺术许可或条款的条款进行复制 GNU通用公共许可证,可以在Perl 5源代码包中找到。

应该在上面找到Perl的完整文档,包括FAQ列表 这个系统使用“man perl”或“perldoc perl”。如果你有权访问 互联网,将您的浏览器指向http://www.perl.org/,即Perl主页。

答案 6 :(得分:0)

在脚本顶部使用#!/usr/bin/env perl