Ich habe mal genauer nachgeschaut, es scheint kein Pendant zu php-cgi zu geben (also perl-cgi), das wird bei PHP ausgeliefert um mit Hilfe der Action-Klausel in der Apache Konfiguration den Pfad für die PHP Version festzulegen. Im Moment benutzt Du die sog. Shebang Zeile (das ist die erste Zeile im Perl Script). Da ist natürlich klar, dass da nur eine Version angegeben werden kann, egal was in Apache konfiguriert wird. Ich habe verschiedene Lösungsansätze, die Du ausprobieren kannst:
1) Am einfachsten wäre natürlich doppelte Datenhaltung, jedes Script gibt es beispielsweise als tellme.pl1 und als tellme.pl2. Du musst dann .pl1 und .pl2 auch als CGI Typen festlegen, aber in einer Datei steht #!"C:\xampp\perl\bin\perl.exe" und in der anderen eben #!"C:\Strawberry\bin\perl.exe".
2) Statt den ganzen Pfadnamen im Shebang anzugeben, könnte man versuchen, nur perl.exe anzugeben und die Suche dem Windows OS (via PATH) zu überlassen. Mit der SetEnv Anweisung könnte man in zwei verschiedenen VirtualHosts verschiedene PATH Angaben ausprobieren:
- Code: Select all
<VirtualHost *:80>
ServerName localhost
SetEnv PATH C:/xampp/perl/bin
DocumentRoot C:/xampp/htdocs
...
bzw.
- Code: Select all
<VirtualHost *:80>
ServerName strawberry
SetEnv PATH C:/strawberry/bin
DocumentRoot C:/xampp/htdocs
...
Und in tellme.pl steht dann in der ersten Zeile nur:
- Code: Select all
#!perl.exe
Habe ich nicht getestet, müßtest Du ausprobieren.
3) Wenn man in der Shebang Zeile auch direkt Umgebungsvariablen ansprechen kann (was ich bezweifle), dann ging vielleicht auch so etwas:
- Code: Select all
<VirtualHost *:80>
ServerName localhost
SetEnv PERL=C:/xampp/bin/perl/perl.exe
und dann als Shebang:
- Code: Select all
#!"$PERL/perl.exe"
Soweit ich weiß, geht da aber leider nicht.
4) Weil 3. wahrscheinlich nicht geht, könnte man einen Workaraund versuchen, ich kann aber leider nur Linux Syntax anbieten. Man müßte schauen, welche Windows Tools es gibt, um das nachzubilden. Der Trick besteht darin, nicht Perl aufzurufen, sondern /bin/sh (eine Shell, bei Windows wäre das cmd.exe - müßte man ggf. ausprobieren) und diese Shell macht dann einen exec auf das gewünschte Programm (via Environmentvariable, die in diesem Kontext ausgewertet wird)
#!/bin/sh
exec $PERL/perl $@
... und hier kommt dann der eigentlich Inhalt von tellme.pl
Oder (vielleicht noch sauberer) man schreibt ein kleines Programm myperl.sh, gibt dieses Programm in der Shebang Zeile an und schreibt in myperl.sh nur diese Zeile:
exec $PERL/perl $@
Habe ich alles nicht ausprobiert, vor allem nicht unter Windows (ich habe kein Windows). Am einfachsten ist es sicherlich, die doppelten Scriptnamen zu wählen. Ausprobieren würde ich in jedem Fall auch die Variante, in der Apache Konfiguration mit der Action Klausel den Perl Interpreter anzugeben. Vielleicht klappt es ja.
P.S.: Nur perl.exe als Shebang Zeile angeben geht leider auch nicht, ich habe gerade ein wenig getestet, die Shebang Zeile MUSS eine vollständige Pfadangabe haben.