Hmmm
Milka Kuh
- perl
HI
ich habe n Perl-Programm gemacht:
#!/usr/bin/perl
$online = "../opensign.gif";
$offline = "../flammeblau.jpg";
print "Content-type: text/html\n\n";
print '<html>';
print '<head>';
print '<title> FTP-Server </title>';
print '</head>';
print '<body>';
if ( -e $online )
{
print "<img src='$online'>";
}
else
{
print "<img src='$offline'>";
}
print '</body>';
print '</html>';
Jetzt habe ich das Problem, dass er immer die Grafik "flammeblau.jpg" anzeigt, obwohl die Datei "opensign.gif" vorhanden ist. Wisst ihr vieleicht warum das nicht geht ?
THX
Milka Kuh
Hi,
Jetzt habe ich das Problem, dass er immer die Grafik "flammeblau.jpg" anzeigt, obwohl die Datei "opensign.gif" vorhanden ist. Wisst ihr vieleicht warum das nicht geht ?
Gibt dem ganzen ein 'Pragma: No cache\n' mit.
Ciao,
Wolfgang
Hi,
#!/usr/bin/perl
#!/usr/bin/perl -w
use strict;
Hiernach darfst Du erst mal Fehler korrigieren :-) Z.B.:
$online = "../opensign.gif";
my $online = '../opensign.gif';
if ( -e $online )
Im CGI-Kontext ist der Begriff "aktuelles Verzeichnis" undefiniert. Wenn Du eine Datei relativ mit ".." suchst, brauchst Du einen solchen Begriff aber. Lies
perldoc FindBin
{
Waaah. perldoc perlstyle, bitte.
Übrigens: Hast Du mal getestet, auf "if (-e $offline)" zu prüfen?
Cheatah
Hi,
HI
$online = "../opensign.gif";
my $online = '../opensign.gif';
Muss das wirklich so ?
if ( -e $online )
Im CGI-Kontext ist der Begriff "aktuelles Verzeichnis" undefiniert. Wenn Du eine Datei relativ mit ".." suchst, brauchst Du einen solchen Begriff aber. Lies
perldoc FindBin
HÄ ? Den Satz hab ich nicht verstanden ...
{
Waaah. perldoc perlstyle, bitte.
Wie meinst du das ?
Übrigens: Hast Du mal getestet, auf "if (-e $offline)" zu prüfen?
ja, ging auch nicht :-(
Cheatah
Milka Kuh
hi,
perldoc FindBin
C:>perldoc FindBin
NAME
FindBin - Locate directory of original perl script
SYNOPSIS
use FindBin;
use lib "$FindBin::Bin/../lib";
or
use FindBin qw($Bin);
use lib "$Bin/../lib";
DESCRIPTION
Locates the full path to the script bin directory to allow the use of
paths relative to the bin directory.
usw.
Waaah. perldoc perlstyle, bitte.
Wie meinst du das ?
gleiche Methode. Tipps einfach mal ein und lies nach
;-)
Christoph S.
Hi,
my $online = '../opensign.gif';
Muss das wirklich so ?
wenn Du perl mit "-w" sowie "use strict;" einsetzt, wirst Du andernfalls den Fehler genannt bekommen. Daher solltest Du eben dies auch bei _jedem_ Perlscript tun.
perldoc FindBin
HÄ ? Den Satz hab ich nicht verstanden ...
Hm, soll das heißen, Du weißt noch nicht mal, dass Dir eine vollständige Perl-Dokumentation auf Deiner Festplatte zur Verfügung steht? Siehe Christophs Antwort, und lies insbesondere auch
perldoc perl
perldoc perlfaq
perldoc perlstyle
perldoc CGI
Übrigens: Hast Du mal getestet, auf "if (-e $offline)" zu prüfen?
ja, ging auch nicht :-(
Das bedeutet, keine der beiden Dateien wird mit Deiner Prüfung gefunden. Diese ist also falsch. Überprüfe übrigens auch die Verzeichnisstruktur auf dem Rechner; manchmal ist das cgi-bin nicht physikalisch unterhalb des htdocs-Verzeichnisses.
Cheatah
hallo Cheatah,
wenn Du perl mit "-w" sowie "use strict;" einsetzt, wirst Du andernfalls den Fehler genannt bekommen. Daher solltest Du eben dies auch bei _jedem_ Perlscript tun.
Ich nehme beides gerne wieder raus, sobald ein Script nach mehreren Tests "fertig" ist und keine Fehler produziert. Meinung dazu ?
Hm, soll das heißen, Du weißt noch nicht mal, dass Dir eine vollständige Perl-Dokumentation auf Deiner Festplatte zur Verfügung steht? Siehe Christophs Antwort
vielleicht hat ihn irritiert, daß ich das auf ner Windows-Kiste gemacht hab ;-)
Grüße aus Berlin
Christoph S.
Hi Christoph,
wenn Du perl mit "-w" sowie "use strict;" einsetzt, wirst Du
andernfalls den Fehler genannt bekommen. Daher solltest Du eben
dies auch bei _jedem_ Perlscript tun.
Ich nehme beides gerne wieder raus, sobald ein Script nach mehreren
Tests "fertig" ist und keine Fehler produziert. Meinung dazu ?
Die würde mich auch interessieren - zumal ich glaube, bei Performance-
Tests tatsächlich einen Unterschied gemessen zu haben.
(Übrigens auch, nachdem ich ein Perl-Skript über mein Perl-Skript habe
laufen lassen, das alle Kommentare, Einrückungen etc. entfernt hat, alle
Variablennamen stark abgekürzt und den Quelltext damit von 25 auf 3.5 KB
reduziert hat ...)
Viele Grüße
Michael
Hallo,
wenn Du perl mit "-w" sowie "use strict;" einsetzt, wirst Du andernfalls den Fehler genannt bekommen. Daher solltest Du eben dies auch bei _jedem_ Perlscript tun.
Ich nehme beides gerne wieder raus, sobald ein Script nach mehreren Tests "fertig" ist und keine Fehler produziert. Meinung dazu ?
Ich habe gelesen, daß mit use strict das Script wesentlich effizienter ist, weil die Variablen nicht dem Paket ::main zugeordnet werden (oder irgendwie so ähnlich :) )und ausserdem kann ich mit my mehrere gleichnamige Variblen für verschiedene Sachen verwenden, wo ich aber ohne my immer eine neue Variable anfangen müsste (oder kann man das doch noch besser machen ? )
use Mosche;
Ich habe gelesen, daß mit use strict das Script wesentlich effizienter ist, weil die Variablen nicht dem Paket ::main zugeordnet werden (oder irgendwie so ähnlich :) )und ausserdem kann ich mit my mehrere gleichnamige Variblen für verschiedene Sachen verwenden, wo ich aber ohne my immer eine neue Variable anfangen müsste (oder kann man das doch noch besser machen ? )
Was du sagtst trifft nur auf die explizite Deklaration von Variablen zu (also mit 'my'). Das Pragma strict hat dabei nichts zu tun - es zwingt dich nur, my zu benutzen (und noch ein bßchen mehr).
use Tschoe qw(Matti);
Hi,
Ich nehme beides gerne wieder raus, sobald ein Script nach mehreren Tests "fertig" ist und keine Fehler produziert. Meinung dazu ?
wenn ein Script mit diesen beiden Angaben erfolgreich durchläuft heißt das noch lange nicht, dass es ohne sie ebenfalls fehlerfrei bleibt. Je nach Schnittstellen zur Außenwelt kommt es früher oder später leicht vor, dass z.B. Variablen uninitialisiert bleiben, mit nicht vorherzusehenden Folgen. Wenn man aber saubere Unittests[1] durchführt, kann man außerhalb der Entwicklungsumgebung gerne darauf verzichten.
vielleicht hat ihn
Sie :-)
Cheatah
[1] Wer nicht weiß, was dieser Begriff genau bedeutet, führt mit an Sicherheit grenzender Wahrscheinlichkeit _keine_ sauberen Unittests durch :-)