2010-03-25 98 views
4

我是Perl新手。我已經使用以下來自一個論壇的代碼連接到一臺服務器。但拋出錯誤信息當我運行我的Perl腳本時,爲什麼會得到'use:command not found'?

[[email protected]]# 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; 

但拋出以下錯誤信息。

[[email protected]]# ./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');' 
+0

您正在使用哪個外殼? – 2010-03-25 16:10:20

+4

這些是shell錯誤,而不是Perl錯誤。你能告訴我們你正在使用哪種設置嗎? – 2010-03-25 16:33:39

+2

奇怪的是,錯誤消息行號是從你的代碼行關閉的。 – toolic 2010-03-25 16:36:22

回答

11

我的猜測是,你正在使用UNIX的一個奇怪的味道,不尊重#!線,並試圖通過殼,而不是通過Perl來運行該腳本。

這可能發生的另一個原因是如果tt.pl以空行開始。 #!必須出現在文件的開頭。

嘗試運行perl tt.pl,看看會發生什麼。

+0

即使這也是拋出相同的錯誤信息 – user301133 2010-03-25 16:10:07

+0

「perl -v」顯示什麼?是否有可能在你的路徑上有一些名爲「perl」的東西,這實際上不是Perl解釋器? (我承認這是一個長鏡頭的位。) – 2010-03-25 16:39:03

1

我沒有看到這些線在你的腳本的頂部,這是所有的Perl模塊和腳本必不可少

use strict; 
use warnings; 

你沒有說這是在運行的環境 - 你在Linux上使用bash嗎?不管你使用的是什麼shell都不理解shebang(#!/usr/bin/perl),並且試圖用它自己的語言來執行腳本,而不是調用Perl來運行它。

嘗試使用/ bin/bash,然後您的shebang行將工作。或者,只需明確調用perl:perl tt.pl

+0

即使在添加這些行後獲得錯誤信息 – user301133 2010-03-25 16:28:57

+0

[root @ CusCent5U2-64CX gannu]#perl tt.pl 無法在@INC中找到Net/Telnet.pm(@ INC包含:/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.7/x86_64-linux-thread-multi/usr/lib64/perl5/site_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8/usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5/usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8。 8/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi – user301133 2010-03-25 16:29:59

+0

/usr/lib64/perl5/vendor_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8。7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5/usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-多/usr/lib/perl5/5.8.8。)在tt.pl第5行。 BEGIN失敗 - 編譯在tt.pl第5行中止。 [root @ CusCent5U2-64CX gannu]#./tt.pl ./tt.pl:line 3:use:command not found ./tt.pl:line 4:use:command not found ./tt.pl:line 5:use:command not found – user301133 2010-03-25 16:30:42

4

我有類似的錯誤消息,發現原因是perl文件使用錯誤的字符編碼(不要問我爲什麼這很重要perl)。 Perl正確安裝,路徑是按順序的,腳本語法是完美的(我甚至在一行「Hello World!」腳本中找到了「use:command not found」錯誤)。檢查tt.pl是否爲UTF8 no-BOM。

+0

是的,如果您使用工具(例如Windows記事本)保存,則可以添加BOM標記字節。打亂了#!,但不可見。 – 2010-03-26 13:36:26

+0

男人,當時花了我一個下午的好時間,因爲大多數文本編輯當然會自動「正確地」解釋和顯示字符編碼。 – Timo 2010-03-26 19:50:57

3

正如一條評論所述:「它看起來像一開始就有一個CR」。
如果你在這裏絕望...
然後運行d2u script.pl

d2u - > DOS到UNIX。

0

同樣的情況,萬一要是/usr/bin/perl文件是空

0

我有同樣的問題,發現有在#沒有perl的!在/ usr/bin中/ perl的。 perl -v或/ usr/bin/perl -v都不起作用。

我也對Perl查找/ -name然後添加符號鏈接從/ usr/bin中的真實位置

的perl -v -bash:perl的:沒有找到命令 在/ usr/bin中/ perl的-v -bash:在/ usr/bin中/ perl的:沒有這樣的文件或目錄

查找/ -name perl的 的/ opt/ISS /斌/的perl5/perl的 的/ opt/ISS /斌/ perl的

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

這是Perl 5中,版本14,顛覆1(v5.14.1)建爲x86_64的Linux的

版權所有1987至2011年,拉里牆

的Perl可以僅根據任一條款的複製藝術執照或 GNU通用公共許可證,可以在Perl 5源代碼包中找到。

本系統使用「man perl」或「perldoc perl」在 上找到Perl的完整文檔,包括FAQ列表。如果您有權訪問 Internet,請將您的瀏覽器指向http://www.perl.org/(Perl主頁)。

在/ usr/bin中/ perl的-v

這是Perl 5中,14版,顛覆1(v5.14.1)建爲x86_64的Linux的

版權所有1987-2010,Larry Wall的

只能根據Perl 5源代碼包中的藝術許可證或GNU通用公共許可證的條款複製Perl。

本系統使用「man perl」或「perldoc perl」在 上找到Perl的完整文檔,包括FAQ列表。如果您有權訪問 Internet,請將您的瀏覽器指向http://www.perl.org/(Perl主頁)。

相關問題