2016-08-03 7 views
-3

Ich habe gerade angefangen, Perl zu lernen. Ich schrieb ein Hello World Programm - hello.pl und machte es mit '+ x' ausführbar.Perl Hallo Welt funktioniert nicht

Ich kann es ausführen Perl hello.pl verwenden, aber wenn ich ./hello.pl versuchen, wird ein Fehler kommt: Fehler: keine solche Datei „Hallo Welt“

Was ist der Grund?

Edit:

Mein Programm

use warnings; 
use strict; 
use 5.010; 

print "Hello World"; 

Mein Fehler:

./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

Bitte den Code eingeben. Von der Fehlermeldung - ich nehme an, Sie haben ein paar Backticks drin oder machen sonst etwas komisches mit Ihrem Skript. – Sobrique

+1

Sollte Duplikat von [Warum sollte die Shebang-Zeile immer die erste Zeile sein?] (Http://StackOverflow.com/questions/12910744) ... Ich schloss früher mit dem falschen Duplikat. –

+1

Dass Sie sagen, dass es gut funktioniert, indem Sie Perl sagen, dass es ausgeführt werden soll, und es nicht von selbst läuft, sollte Ihnen sagen, dass perl es selbst nicht ausführt. Dass Sie angeben, dass Sie ihm die Erweiterung ".pl" gegeben haben und erwartet, dass es unter Perl läuft, sagt mir, dass Sie entlang der Zeilen von win32 denken, wo Erweiterungen wichtig sind. Sie sind jedoch unix/linux egal. Aus diesem Grund benötigen Sie die "Shbang-Linie", um der Shell mitzuteilen, was die ausführbare Datei ausführen soll. – Axeman

Antwort

7

Verwenden shebang line in der Spitze des Programms und sollte die use warnings; setzen und use strict; Es sagt Kernal oder Apache als Perl-Skript interpretieren.

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

print "hello world"; 

und mehr über shebang

Does the shebang determine the shell which runs the script?

Why should the shebang line always be the first line?

+0

Ich würde vorschlagen, dass dies auch "verwenden Sie streng; nimm Warnungen; '- es ist gut, diese Gewohnheit früh zu bekommen!:) – Sobrique

+1

@Sobrique Danke :) Beitrag bearbeitet – mkHun

+0

Es hat funktioniert, vielen Dank! – DanielJames

1

ohne den Code zu sehen, das ist nur eine Vermutung (warum die Leute denken, wir ihre Programme debuggen können sie, ohne zu sehen?) aber haben Sie die richtigen Anführungszeichen in Ihrem Programm?

Sie Programm sollte wie folgt aussehen:

#!/usr/bin/perl 

use strict; 
use warnings; 
use 5.010; 

say 'Hello World'; 

Oder (mit älteren Versionen von Perl) wie folgt aus:

#!/usr/bin/perl 

use strict; 
use warnings; 

print "Hello World\n"; 

Meine erste Version verwendet Apostrophe um die Zeichenfolge und meine zweite Version verwendet doppelte Anführungszeichen. Wenn Sie die Fehlermeldung "Keine solche Datei" erhalten, dann ist es wahrscheinlich, dass Sie Backticks verwenden, mit denen ein externes Programm ausgeführt wird. Hat Ihr print Linie wie folgt aussehen:

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

Update: Nein, das ist nicht das Problem. Wenn dies der Fall wäre, könnten Sie das Programm nicht mit perl hello.pl ausführen. Dies ist sehr wahrscheinlich etwas Verwirrung über die Shebang-Linie als mkHun says. Aber noch einmal, wir können Ihnen nicht wirklich helfen, ohne Ihren Code zu sehen.