Perl auf DS213+

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

bernd_

Benutzer
Registriert
29. Apr. 2014
Beiträge
763
Reaktionspunkte
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
 
Hallo,
/usr/bin/perl

Gruß Götz
 
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?
 
Hallo,
die erste Zeile muß
#!/usr/bin/perl
lauten.

Gruß Götz
 
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";
 
Nein, das Directory, in dem das Perl-Skript liegt, sollte eigentlich keine Rolle spielen. Ist die Datei denn ausführbar (+x)?
 
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ß.
 
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?
 
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.
 
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
 
Funktioniert denn auch ./Hi.pl, wenn Du Dich im Verzeichnis befindest, in dem auch das Skript liegt?
 
Ausführbar, Shebang und als Endung .cgi.
 
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
 
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!";
 
Es geht nur mit der cgi-Endung!
 
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
 
.. 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