Anweisungen ausführen, wenn Datei nicht existiert?
Markus
- perl
Hallo,
wie kann ich es erreichen, dass ein Script nach
open(DATEI,"<daten.dat")
noch Anweisungen ausführt, wenn diese Datei nicht existiert?
Bisher habe ich nur die Möglichkeit gefunden, dass das Script mit einer Fehlermeldung unterbrochen wird.
open(DATEI,"<daten.dat") || die "Datei existiert nicht: $!";
Gruß
Markus
Hallo,
wie kann ich es erreichen, dass ein Script nach
open(DATEI,"<daten.dat")
noch Anweisungen ausführt, wenn diese Datei nicht existiert?
Bisher habe ich nur die Möglichkeit gefunden, dass das Script mit einer Fehlermeldung unterbrochen wird.
open(DATEI,"<daten.dat") || die "Datei existiert nicht: $!";
Verwende kein 'die', z.B.
open(DATEI,"<daten.dat") || &error("Datei existiert nicht: $!");
sub error
{
print "Content-type: text/html\n\n";
print "<html><body>";
print $_[0];
print "</body></html>";
}
Du kannst natürlich auch etwas anderes machen, als die Fehlermeldung am Bildschirm auszugeben.
Gruß Markus
Hallo,
open(DATEI,"<daten.dat") || die "Datei existiert nicht: $!";
Wobei noch anzumerken ist, das hier bei einem Fehler die Datei durchaus existieren kann, sinnvoller wäre deshalb:
open(DATEI,"<daten.dat") || die "Fehler beim Oeffnen der Datei daten.dat: $!";
Gruß MArkus
open(DATEI,"<daten.dat") || &error("Datei existiert nicht: $!");
sub error
{
print "Content-type: text/html\n\n";
print "<html><body>";
print $_[0];
print "</body></html>";
}
Die Idee mit der Subroutine hatte ich auch schon, aber die meine Version funktioniert nicht. :(
Hier mal ein paar Code-Schnipsel:
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
my @Daten;
open (DATEI, "<userdaten.dat") || Standarddaten();
@Daten = <DATEI>;
close(DATEI);
...
...
sub Standarddaten{
print "Content-type: text/html\n\n";
print <<"ENDE";
<html>
<head>
<title>Standardeinträge lesen</title>
</head>
<body>
Die Datei konnte nicht geöffnet werden!
<br>
Es wird nun eine Datei mit mit Standard-Einträgen verwendet!
</body>
</html>
ENDE
open (DATEI, "<standarddaten.dat") || die "Fehler beim Öffnen der Datei: $!";
@Daten = <DATEI>;
close (DATEI);
}
...
Gruß
Markus
Hoi,
wie kann ich es erreichen, dass ein Script nach
open(DATEI,"<daten.dat")
noch Anweisungen ausführt, wenn diese Datei nicht existiert?
Bisher habe ich nur die Möglichkeit gefunden, dass das Script mit
einer Fehlermeldung unterbrochen wird.
open(DATEI,"<daten.dat") || die "Datei existiert nicht: $!";
Na, dann nutz das doch auch:
open DATEI,'<daten.dat' or fehlerbehandlung();
Aber ich glaube, du moechtest dich lieber mit -f beschaeftigen
(perldoc -f -f):
unless(-f 'daten.dat') {
# do something very special
}
Gruesse,
CK
Hallo,
Alternativ zu der hier bereits genanneten Variante kannst Du auch z.B.
if(open(FILE,'daswauchimmer')
{
# mach was mit FILE
}
else
{
# ok war wohl nichts mit dem aufmachen, mach was anderes
}
verwenden. (Wobei der else-Zweig nätürlich optional ist;-)
Grüße
Klaus