Sandra: Überprüfen ob es geklappt hat (open)

Hi,
Ich habe gehört das die Funktion open,true zurück gibt wenn die Datei geöffnet werden konnte.
Ich habe z.B.:
open(DATEI1,"<$name") || err("Konnte die Datei nicht oeffnen!");

Wenn ich jetzt folgendes Versuche, dann geht das nicht.
if(DATEI1 eq 'true'){
blabla
}elsif(Datei1 eq 'undefined'){
blabla
}else{
print header;
print qq(Was haben sie denn gemacht???);
exit;
};

Wie macht man es richtig?
Cu
Sandra

  1. öhm.. des geht ..habs probiert ... Aber es gibt sicher noch viel simplere Lösungen, aber ich bin schon 31 Stunden wach, also muss das reichen. ..Sag hinterher nicht, das das net geht ...es geht!

    So denn... ich geh erstam schlafen jetzt ... *zzZZZZ* ...bye bye

    my $Datei = "/etc/shadow";

    if (open(DATA,"<$Datei")) {
      my @TEMP = <DATA>;
      close(DATA);

    # ...Mach was
      # ...Mach noch was anderes

    print "Datei vorhanden :)\n";
      }
    else {
      print "Datei is net da :(\n";
      }

    1. Ich nochmal :-) ....wenns dir nur darum geht, zu gucken ob eine Datei überhaupt da ist, dann gehts auch ganz kurz:

      ...

      my $Datei = "/etc/shadow";

      if (-e $Datei) { print "Juhuuu!"; }
      else           { print "FATAL KERNEL ERROR!!!"; }

      Yep. That's it :)

  2. Hi,
    Ich habe gehört das die Funktion open,true zurück gibt wenn die Datei geöffnet werden konnte.
    Ich habe z.B.:
    open(DATEI1,"<$name") || err("Konnte die Datei nicht oeffnen!");

    Das sollte gehen, wenn es die Funktion err() gibt. Besser wäre es aber noch "$!" mit auszugeben, weil in $! eine Fehlermeldung steht.

    Wenn ich jetzt folgendes Versuche, dann geht das nicht.
    if(DATEI1 eq 'true'){

    Warum sollte ein Dateihandle gleich dem String 'true' sein?

    blabla
    }elsif(Datei1 eq 'undefined'){

    oder die nicht benutzte symbolische Referenz "Datei1" auf einmal den String 'undefined' enthalten?

    Wie macht man es richtig?

    Indem man sich vorher informiert, wie die richtige Syntax der Sprache ist, die man benutzen möchte.

    ein Möglichkeit, das zu tun was du möchtest wäre in etwa so:

    open DATEI1, "<$name" || die "Fehler! Konnte $name nicht öffnen, weil: $!";
    ....
    while(<DATEI1>)
    {
        print
    }
    close DATEI1;

    Struppi.