Perl auf DS213+

Status
Für weitere Antworten geschlossen.

bernd_

Benutzer
Mitglied seit
29. Apr 2014
Beiträge
731
Punkte für Reaktionen
7
Punkte
38
Hallo zusammen,

was muss ich denn in der ersten Zeile eines Perl Scripts als
Standard- Pfad für den Perl Interpreter angeben?

Thx for Tips, Bernd
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
/usr/bin/perl

Gruß Götz
 

bernd_

Benutzer
Mitglied seit
29. Apr 2014
Beiträge
731
Punkte für Reaktionen
7
Punkte
38
thx, aber funktioniert leider noch nicht..

mein Testskript zum testen index.pl:

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

# Zur Eingabe auffordern
print "Bitte geben Sie Ihren Namen ein:\n";

# Eine Zeile einlesen
my $name = <STDIN>;

# Zeilenumbruch entfernen
chomp $name;

# Gruß ausgeben
print "Hallo, $name, einen schönen Tag noch!\n";


wird nur angezeigt beim aufruf über die webseite:
dyndnsname\perl\index.pl

oder liegts an den modulen die ich noch bereitstellen muss "use"..
oder an den rechten der datei?
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
die erste Zeile muß
#!/usr/bin/perl
lauten.

Gruß Götz
 

bernd_

Benutzer
Mitglied seit
29. Apr 2014
Beiträge
731
Punkte für Reaktionen
7
Punkte
38
war korrekt, war ein copy paste Fehler meinerseits,
es wird aber immer noch beim aufrufen über den Browser nur der Sourcecode angezeigt und nicht interpretiert.
muss die .pl datei in einem unterverzeichnis liegen, .bin oder .cgi?

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

# Zur Eingabe auffordern
print "Bitte geben Sie Ihren Namen ein:\n";

# Eine Zeile einlesen
my $name = <STDIN>;

# Zeilenumbruch entfernen
chomp $name;

# Gruß ausgeben
print "Hallo, $name, einen schönen Tag noch!\n";
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.691
Punkte für Reaktionen
2.098
Punkte
829
Nein, das Directory, in dem das Perl-Skript liegt, sollte eigentlich keine Rolle spielen. Ist die Datei denn ausführbar (+x)?
 

Thorndike

Benutzer
Mitglied seit
22. Sep 2010
Beiträge
742
Punkte für Reaktionen
4
Punkte
38
Wenn die Dateien als Quellcode angezeigt werden ist wohl entweder mod_perl nicht im User Apache installiert oder der passende Handler steht nicht in der Konfigurationsdatei die früher einmal httpd.conf-user hieß.
 

bernd_

Benutzer
Mitglied seit
29. Apr 2014
Beiträge
731
Punkte für Reaktionen
7
Punkte
38
Ich habe gerade für alle ausführbare Rechte für einen Test gegeben:
-rwxrwxrwx 1 admin users 260 Aug 5 01:01 index.pl
DiskStation>
nicht erfolgreich, selber Fehler.


ok, danke für den Tip!
und wie installiere ich mod_perl auf der DS? Tip?
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.187
Punkte für Reaktionen
71
Punkte
68
Die Endung pl muss als CGI-Handler registriert sein und das Verzeichnis muss die Ausführung erlauben. Ein paar Grundlagen gibt es u.a. hier.

Das Script oben wird auch nicht als Webseite funktionieren, weil eine Webseite keine Eingaben über stdin annehmen kann.
 

bernd_

Benutzer
Mitglied seit
29. Apr 2014
Beiträge
731
Punkte für Reaktionen
7
Punkte
38
Ja das ist klar mit stdin, grins.


Mich wundert nur dass ein Script auf der Kommandozeile via ssh funktioniert..:

DiskStation> perl Hi.pl
Hello World!DiskStation>


Hi.pl:

#!/usr/bin/perl

# Hello world perl program

print "Hello World!";

im Browser jedoch eben nicht:
http://xxxx.dnshome.de/perl/Hi.pl

Ausgabe:

#!/usr/bin/perl

# Hello world perl program

print "Hello World!";


DiskStation> ls -al Hi.pl
-rwxrwxrwx 1 admin users 70 Aug 7 17:20 Hi.pl

ok ich schau mir die Grundlagen nochmal an..
thx
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.691
Punkte für Reaktionen
2.098
Punkte
829
Funktioniert denn auch ./Hi.pl, wenn Du Dich im Verzeichnis befindest, in dem auch das Skript liegt?
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Ausführbar, Shebang und als Endung .cgi.
 

bernd_

Benutzer
Mitglied seit
29. Apr 2014
Beiträge
731
Punkte für Reaktionen
7
Punkte
38
DiskStation> ./Hi.pl
-sh: ./Hi.pl: not found
DiskStation>

wenn ich mich im pfad web/perl/cgi-bin befinde...

Shebang (auch Magic Line) bezeichnet bei unixoiden Betriebssystemen die Zeichenkombination #! am Anfang eines Skriptprogramms,
schon wieder was dazugelernt..:>))

DiskStation> cd cg*
DiskStation> ls
Hi.cgi Hi.pl
DiskStation> chmod 777 Hi.cgi
DiskStation> ls
Hi.cgi Hi.pl
DiskStation> ls -al
...
-rwxrwxrwx 1 admin users 70 Aug 7 17:20 Hi.cgi
-rwxrwxrwx 1 admin users 70 Aug 7 17:20 Hi.pl
DiskStation> perl Hi.cgi
Hello World!DiskStation> ./Hi.cgi
-sh: ./Hi.cgi: not found
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
In der Datei fehlt noch ein Content-Type am Anfang, vor dem ersten auszugebenen Text.

#!/usr/bin/perl
# Hello world perl program

print "Content-type: text/html; charset=UTF-8\n\n";

print "Hello World!";
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Es geht nur mit der cgi-Endung!
 

bernd_

Benutzer
Mitglied seit
29. Apr 2014
Beiträge
731
Punkte für Reaktionen
7
Punkte
38
ok, aber jetzt bekomme ich:

http://xxx.dnshome.de/perl/cgi-bin/hi.cgi

Es tut uns Leid, die von Ihnen gesuchte Seite konnte nicht gefunden werden.

ich habe hi.pl direkt nach hi.cgi kopiert und nur die Dateiendung geändert.

#!/usr/bin/perl

# Hello world perl program

print "Content-type: text/html; charset=UTF-8\n\n";

print "Hello World!";


hmm:

Hello World!DiskStation> chmod 777 hi.cgi
DiskStation> perl hi.cgi
Content-type: text/html; charset=UTF-8
 

bernd_

Benutzer
Mitglied seit
29. Apr 2014
Beiträge
731
Punkte für Reaktionen
7
Punkte
38
.. hat noch jemand einen Tip?

würde mich freuen!
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat