2016-08-03 84 views
-3

我剛開始學習perl。我寫了一個Hello World程序 - hello.pl,並使用'+ x'使其可執行。Perl Hello World不工作

我可以用perl hello.pl執行它,但是當我嘗試./hello.pl,一個錯誤來了:錯誤:沒有這樣的文件的「Hello World」

的原因是什麼?

編輯:

我的程序

use warnings; 
use strict; 
use 5.010; 

print "Hello World"; 

我的錯誤:

./hello.pl: line 1: use: command not found ./hello.pl: line 2: use: command not found ./hello.pl: line 3: use: command not found Error: no such file "Hello World"

+6

請發佈代碼。從錯誤信息 - 我猜你已經有一些反應,或者在其他方面做你的腳本奇怪的事情。 – Sobrique

+1

應該重複[爲什麼shebang行總是第一行?](http://stackoverflow.com/questions/12910744)...我之前關閉了錯誤的重複。 –

+1

你說它通過告訴perl來運行它並且它不能自行運行,應該告訴你,由它本身調用,perl沒有運行它。你指定你給它的擴展名爲「.pl」,並且期望它在perl下運行,告訴我你正在考慮擴展很重要的win32行。但是,它們對於unix/linux無關緊要。這就是爲什麼你需要「shbang line」來告訴shell應該執行什麼程序。 – Axeman

回答

7

使用shebang line在程序的頂部,應該把use warnings;use strict;它告訴給內核或Apache解釋爲一個Perl腳本。

#!/usr/bin/perl 
use warnings; 
use strict; 

print "hello world"; 

,更多的是家當

Does the shebang determine the shell which runs the script?

Why should the shebang line always be the first line?

+0

我建議這也需要'使用嚴格;使用警告;' - 早日習慣這種習慣是很好的!:) – Sobrique

+1

@Sobrique謝謝:)文章編輯 – mkHun

+0

它的工作,非常感謝! – DanielJames

1

沒有看到你的代碼,這只是一個猜測(爲什麼人們認爲我們可以調試他們的節目沒有看到他們?)但是你的程序中是否有正確的引號字符?

你的程序應該是這樣的:

#!/usr/bin/perl 

use strict; 
use warnings; 
use 5.010; 

say 'Hello World'; 

或(與舊版本的Perl)這樣的:

#!/usr/bin/perl 

use strict; 
use warnings; 

print "Hello World\n"; 

我的第一個版本將使用字符串周圍單引號和我的第二個版本使用雙引號字符。如果您收到「沒有這樣的文件」錯誤,那麼您可能使用反引號 - 用於執行外部程序。請問您print線是這樣的:

print `Hello World\n`; # Warning! Wrong kind of quotes! 

更新:不,這不是問題。如果是這種情況,您將無法使用perl hello.pl運行該程序。這很可能是對於shebang線的一些混淆,如mkHun says。但是,再一次,如果沒有看到您的代碼,我們無法真正幫助您。