Perl-Scripts benutzen: Wie?

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Perl-Scripts benutzen: Wie?

Postby Saarlaender » 11. December 2012 14:11

Hi Leute,

was Perl angeht bin ich absoluter Beginner...

Ausgangslage: Xampp 1.8.1 portable, laut Admininterface läuft Perl 5.16.1

Die Frage ist nun, wie ich ein Perl-Script aufrufe damit es auch funktioniert. In meinen Unterlagen gibts den folgenden Aufruf:
Code: Select all
<!--#exec cgi="test.pl"-->


online fand ich dann noch sowas hier:
Code: Select all
<?php print "Hello from PHP! ";
$perl = new Perl();
$perl->require("test.pl");
print "Bye! ";
?>


Funktioniert beides nicht. Beim 1. Aufruf passiert nichts und im Browser (Quellcode) steht der Aufruf auch noch so drin, beim 2. Aufruf kommt ein Fehler "Fatal error: Class 'Perl' not found..."


Wie gehts richtig?
Saarlaender
 
Posts: 9
Joined: 15. August 2005 11:37
Location: Saarland

Re: Perl-Scripts benutzen: Wie?

Postby Nobbie » 11. December 2012 19:10

Saarlaender wrote:Die Frage ist nun, wie ich ein Perl-Script aufrufe damit es auch funktioniert. In meinen Unterlagen gibts den folgenden Aufruf:
Code: Select all
<!--#exec cgi="test.pl"-->



Um Himmels Willen - wo bekommt man solche "Unterlagen" her? Das ist ein Beispiel, wie man mit Hilfe von SSI (eine total veraltete CGI Schnittstelle) ein Perl Script startet. Dazu muss aber SSI aktiviert sein.

Saarlaender wrote:
Code: Select all
<?php print "Hello from PHP! ";
$perl = new Perl();
$perl->require("test.pl");
print "Bye! ";
?>



Das ist tatsächlich noch schlechter (beeindruckend, was im Internet für phantasievolle Müllscripts rumgereicht werden). Da wird (was ja auch paasiert) nur der Perl Quellcode ausgegeben.

Xampp liefert im cgi-bin Verzeichnis zwei kleine Perlscripts aus, eines heißt "perltest.cgi" und das andere "printenv.pl". Anscheinend soll damit demonstriert werden, dass man das Script sowohl *.cgi als auch *.pl nennen kann. Die Endung ist letztendlich zweitrangig, entscheidend ist die erste Zeile im Script, die sog. "Shebang" Zeile. Da wird dem Webserver angewiesen, welcher Interpreter für den nachfolgenden Code gestartet werden muss.

Diese Shebang Zeile ist bei den o.g. Scripts identisch, das ist auch klar, das sind beides Perl Scripts.

So, schau es Dir an - abkupfern und fertig! Aufgerufen werden diese Scripts mittels:

http://localhost/cgi-bin/perltest.cgi
http://localhost/cgi-bin/printenv.pl

In httpd.conf gibt es irgendwo eine Anweisung "ScriptAlias ..." und die sorgt dafür, dass die Scripts in c:/xampp/cgi-bin gefunden werden, wenn man http://localhost/cgi-bin/dateiname.pl im Browser eingibt. Wenn man das Script nicht in diesem cgi-bin Ordner speichern will (obwohl da auch nichts gegen spricht), sondern im htdocs Ordner bzw. einem Ordner darunter, dann muss in der <Directory ....> Konfiguration für c:/xampp/htdocs (was auch der DocumentRoot ist) bei den "Options" u.a. die Anweisung "ExecCGI" stehen (das ist glaube ich bei Xampp auch der Fall). Dann kann man auch ein test.pl beispielsweise direkt im Ordner c:/xampp/htdocs speichern und mit http://localhost/test.pl starten (ohne cgi-bin darin).

Letzteres kannst Du ja mal herausfinden - denn: "nur üben übt"! Und nicht vergessen: die allererste Zeile aus den anderen Scripts MUSS auch in deinem script stehen. Und danach kommen normale Perl Script Anweisung. Nur um es nochmal klar zu machen - so sieht diese Shebang Zeile aus:

Code: Select all
#!"C:\xampp\perl\bin\perl.exe"


Die Gänsefüsschen sind hier eigenlich überflüssig - die braucht man, wenn irgendwo im Pfad eine Leerzeichen wäre, aber das ist hier nicht der Fall, es täte also auch so:

Code: Select all
#!C:\xampp\perl\bin\perl.exe


Auf diese Weise kann man auch einen anderen Perl Interpreter angeben, falls Du einen besseren oder anderen irgendwo installiert hättest - einfach dort den vollen Pfad zum Interrpeter angeben.
Nobbie
 
Posts: 8772
Joined: 09. March 2008 13:04

Re: Perl-Scripts benutzen: Wie?

Postby Saarlaender » 12. December 2012 13:10

Danke für die ausführliche Antwort.

Die Unterlagen sind von ner Fernschule - aber so alt das es echt ein Witz ist... Aber das is ein anderes Thema.

Wie sieht denn der Aufruf aus einer html-Datei aus? Dh die aktuelle Version des SSI-Aufrufs
...also nicht als normaler Link, sondern so dass die Datei innerhalb der html-datei augerufen bzw. ausgeführt wird.
Saarlaender
 
Posts: 9
Joined: 15. August 2005 11:37
Location: Saarland

Re: Perl-Scripts benutzen: Wie?

Postby Nobbie » 12. December 2012 20:54

Saarlaender wrote:Wie sieht denn der Aufruf aus einer html-Datei aus? Dh die aktuelle Version des SSI-Aufrufs


Gar nicht. Man kann in HTML Dateien keine Scripts aufrufen - das kann HTML nicht.

Wenn du HTML und Perl "mischen" willst (was ja im Prinzip der Normalfall ist), dann ist es falsch herum gedacht, aus HTML ein Perl Script aufzurufen (weil es nicht geht). Richtig herum ist, im Browser (oder als Link usw.) ein Perl Script (oder abstrakt: ein CGI Script) aufzurufen und dieses gibt (u.a.) das HTML aus, welches Du gerne sehen willst.

Saarlaender wrote:...also nicht als normaler Link, sondern so dass die Datei innerhalb der html-datei augerufen bzw. ausgeführt wird.


s.o. - geht nicht. Nebenbei (das hast Du nicht ganz richtig verstanden): es gibt keine "aktuelle" oder "alte" Version eines SSI Aufrufs, sondern SSI ist an sich total veraltet. Die Syntax ist immer die gleiche, aber man benutzt es nicht mehr, weil es mit PHP und Perl usw. viel mächtigere CGI Sprachen gibt.

Du hast offensichtlich im Moment noch ein grundsätzliches Verständnisproblem, wie dynamisch gestaltete HTML Seiten "funktionieren". Ich weiß nicht, warum Du konkret nach Perl fragst, denn PHP bietet eigentlich die komfortablere Schnittstelle für die dynamische Seitengestaltung. Der Begriff "CGI" bezeichnet dabei lediglich die funktionale Obermenge, wie man grundsätzlich auf dem Webserver Seiten mit dynamischem Inhalt erstellt (die letztendlich natürlich HTML enthalten, denn Browser verstehen kein PHP oder Perl, die verlangen nach HTML).
Nobbie
 
Posts: 8772
Joined: 09. March 2008 13:04

Re: Perl-Scripts benutzen: Wie?

Postby Saarlaender » 13. December 2012 12:03

Hallo und nochmal danke


Also kurz zum Hintergrund:
Ich mach nen Fernschulkurs zum Techniker. Leider sind die Unterlagen IT-Technisch total veraltet ... ABER in Projektwoche sowie der Prüfung muss man nunmal damit arbeiten.

In den Unterlagen wird unter anderem ein Besucherzähler mit Perl programmiert und über SSI aufgerufen (siehe oben). Somit muss ich also an der entsprechenden Stelle, an welcher der Besucherzähler erscheinen soll, das Perl-Script aufrufen.

Das es anders geht weiß ich, aber ich muss es so machen :-/


Habe gerade gesehen, dass für SSI-Zeug die Dateiendung auf .shtml stehen muss - das wars... :)
Saarlaender
 
Posts: 9
Joined: 15. August 2005 11:37
Location: Saarland


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 13 guests