ActivePerl auf W2K

Hallo,

aller Anfang ist schwer. ActivePerl auf W2K mit IIS5.
Kleine DOS-Programme (File In- und Out) gehen.
Wie kann ich sicher sein, ob ich mein ActivePerl richtig installiert habe?

Im Browser erhalte ich oft:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

nachfolgendes liegt unter: C\inetpub\wwwroot\cgi-bin
#!/usr/bin/perl -w
use strict;
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);

#$sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst = localtime(time);

obige Zeile Zeilenumbruch

open(LOG,">>logfile.txt");
#print LOG $sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst, " „;
print LOG $cgi->remote_host(),“ ", $cgi->user_agent(), „\n“;
close(LOG);

Vielleicht ist ActivePerl doch nicht das richtige, wenn ich meine zukünftigen Perl-Progr. auch auf Linux laufen lassen will?

Es gibt sehr sehr viele Beispiele für einfache Script.
Leider ist es für mich als Anfänger schwer zu erkennen, ob die nur für Linux/Unix oder auch für Windows geeignet sind.

Das Programm: tellme.pl läuft allerdings auf mein Server.

Vielen Dank im voraus für eure Meinung.

Ralf

Hallo,

aller Anfang ist schwer. ActivePerl auf W2K mit IIS5.
Kleine DOS-Programme (File In- und Out) gehen.
Wie kann ich sicher sein, ob ich mein ActivePerl richtig
installiert habe?

Im Browser erhalte ich oft:
CGI Error
The specified CGI application misbehaved by not returning a
complete set of HTTP headers. The headers it did return are:

Was ist daran so kompliziert: Die CGI Anwendung lieferte nicht die benötigten Header (nämlich gar keine).
Zumindest Content-Type muss geliefert werden.

nachfolgendes liegt unter: C\inetpub\wwwroot\cgi-bin
#!/usr/bin/perl -w
use strict;
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);

#$sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst =
localtime(time);

obige Zeile Zeilenumbruch

open(LOG,">>logfile.txt");
#print LOG
$sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst, " „;
print LOG $cgi->remote_host(),“ ", $cgi->user_agent(),
„\n“;
close(LOG);

print $cgi->header();


Vielleicht ist ActivePerl doch nicht das richtige, wenn ich
meine zukünftigen Perl-Progr. auch auf Linux laufen lassen
will?

Ist schon ok, die Programme sollten kompatibel sein, sofern man nicht spezielle Win32:: Module verwendet.

Es gibt sehr sehr viele Beispiele für einfache Script.
Leider ist es für mich als Anfänger schwer zu erkennen, ob die
nur für Linux/Unix oder auch für Windows geeignet sind.

Im Prinzip laufen sehr viele Script unter beiden Plattformen. Lediglich wenn flock (wurde in irgendeiner Windows-Version mal nicht unterstützt, evtl. gehts jetzt), oder speziell auf die Plattform angepasste Module verwendet werden, oder Pfade Windows-typisch mit \ angegeben sind (/ geht auch unter Win, \ unter Unix nicht), geht es nicht.

Alexander

Hallo Alexander,

deine Idee hat mich nicht weiter gebracht, weil ich einfach noch zu wenig checke. Trotzdem Danke für deine Mühe.

Vielleicht kann der Mod. den folgenden Link für Anfänger aufnehmen.

http://page-workshop.de

Ich werde sicherlich eine Weile benötigen, um sagen zu können:
Diese Seiten wären „alter Kaffe“.

***************************************
Die Zeile
use CGI;
oder
use CGI:Carp
brauchte ich nach ppm install CGI nicht mehr einzugeben.
(Achtung ich war online bei der Installation)

Für andere Anfänger -> Nach der Installation
ppm search CGI
25. CGI-Minimal [1.09] A lightweight CGI form …
ppm install CGI-Minimal
***************************************

Vielleicht hat noch jemannd solche Links „rumzuliegen“ ?,
damit die alten Perl-Hasen nicht „gelangweilt“ werden.

Ralf

Hallo Alexander,

deine Idee hat mich nicht weiter gebracht, weil ich einfach
noch zu wenig checke. Trotzdem Danke für deine Mühe.

Naja, nach Einfügen der einen Zeile print $cgi->header(); ging es wohl nicht ?

Wenn ein Script durch den Webserver aufgerufen wird, müssen vor den eigentlichen Daten Kopfzeilen gesendet werden (ähnlich wie bei einer E-Mail).
Wichtig ist hierbei der angesprochene „Content-Type:“, nach welchem der Browser entscheidet, wie der die Datei anzeigen muss (das geht NICHT nach Dateiendung, ein .cgi-File kann z.B. auch ein Bild liefern).
Weiterhin kann man mit Hilfe der Kopfzeilen z.B. Cookies setzen, Caching kontrollieren, etc.
Mehr in der Dokumentation zu CGI.pm, die man mit „perldoc CGI“ aufrufen kann.

Perl-Einführungsseiten:
http://www.phy.uni-bayreuth.de/~btpa25/perl/perl_mai…

zu CGI:
http://www.worldmusic.de/perl/

***************************************
Die Zeile
use CGI;
oder
use CGI:Carp
brauchte ich nach ppm install CGI nicht mehr einzugeben.
(Achtung ich war online bei der Installation)

Kenne das zwar unter Win nicht so genau, aber diese Zeilen sicht sicher auch unter Win erforderlich. ppm INSTALLIERT die Module nur, die „use“-Zeilen sorgen dafür, das die Module verwendet werden.

Alexander


#!/usr/bin/perl
use CGI qw/:standard/;
print header, start_html, h1(„Hello World“), end_html;

Hallo Ralf,

#!/usr/bin/perl
Ich weiß nicht wie das beim IIS Server ist, aber bei Apache unter Windows musst Du’s auch
a) konfigurieren was er mit *.pl anstellen soll
oder
b) alle Startzeilen ändern also z.B.
#C:\perl\bin\perl.exe

Vielleicht ist ActivePerl doch nicht das richtige, wenn ich
meine zukünftigen Perl-Progr. auch auf Linux laufen lassen
will?

Doch doch.
Du kannst sogar statt der Standard-Perl-Installationen die SuSE oder RedHat mitbringen auch auf Linux Active Perl installieren.

Ganz wichtig:
Man sollte sich bemühen plattformunabhängig zu schreiben (in der Praxis nicht so leicht), zu beachten sind insbesondere

  • die system Befehle (sind zu vermeiden!)
  • binmode beim Arbeiten mit binären Daten (ist zu verwenden!)

Meine allgemeine Erfahrung mit Apache/Linux vs. IIS/2000 war bisher, dass die Windows-Systeme im Bezug auf Perl zickiger sind als ein ordentlich (üblich) konfigurierter Apache/Linux.

Es gibt sehr sehr viele Beispiele für einfache Script.
Leider ist es für mich als Anfänger schwer zu erkennen, ob die
nur für Linux/Unix oder auch für Windows geeignet sind.

Einige komplexere Systeme tun’s nicht ohne Änderung auf Windows weil Unix-Befehle aufgerufen werden. Andererseits gibt’s fette Projekte wie das Forumsystem YaBB, das wunderbar auf 'nem Windows 2000 Server läuft.

Ach und hatte ich heute schon http://www.perlmonks.org empfohlen?
Schönen Gruß
Ingo Steinke