Martin Jung: close -» Warnung, wenn Datei bereits existiert

Hi Fachleute,

ich war gerade im Forum (Perl -> 700 Einträge) und dannn auf www.perl.com. Leider wurde ich nicht fündig (bzw. wusste nicht, wo und wonach ich eigentlich suchen soll).Jetzt raucht mir der Schädel!

Ich habe ein kleines Script zum manuellen generieren von HTML-Seiten geschrieben. Es werden keine Dateien eingelesen, sondern nur neue geschrieben.

Das Problem: Was mache ich, wenn eine Datei mit dem angegebenen Namen bereits existiert. Wie kann ich das ermitteln, um gegebenefalls eine Warnmeldung ausgeben zu lassen.

Danke und Grüsse
Martin

  1. Hi!

    Das Problem: Was mache ich, wenn eine Datei mit dem angegebenen Namen bereits existiert. Wie kann ich das ermitteln, um gegebenefalls eine Warnmeldung ausgeben zu lassen.

    Also wenn Du das erst bei close tun willst (dem Titel nach zu urteilen), ist das ein bisschen zu spaet. ;-) Versuch mal eher sowas:

    $file = "datei.html";

    if (-f $file) {
        print STDERR "File $file does already exist!\n";
    } else {
        open(FHANDLE, ">$file") print STDERR "Can't open $file! Reason: $!\n";
        #
        # print FHANDLE ...
        #
        close FHANDLE;
    }

    Bye, Calocybe

    1. Hi Calocybe,

      danke erstmal !

      Also wenn Du das erst bei close tun willst (dem Titel nach zu urteilen), ist das ein bisschen zu spaet. ;-) Versuch mal eher sowas:

      Bin halt noch Newbie :-((

      Das ganze ist eigentlich nicht SO kritisch. Es soll nur meinem Freund, dem ich eine Seite gemacht habe, etwas die Pflege vereinfachen (Computer sind eine wirklich andere Welt für ihn..).

      In $htmlfile ist der HTML-Dateiname gespeichert, die ich durch ein anderes Unterprogramm vorher abfragen lasse (in $htmldir steht dann natürlich das Verzeichnis).

      Geht dann folgendes?

      #######################
      sub new_file {

      if (-f $htmldir/$htmlfile) {
           print STDERR "File $htmlfile does already exist!\n";
      }
      else
        {  
      open(NEWFILE,">$htmldir/$htmlfile");
      print NEWFILE "<html><head><title>Auktionen - TK</title>\n";
      print NEWFILE "<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n";
      print NEWFILE "<link rel="stylesheet" type="text/css" href="$path_abs/main/styles.css">\n";
      :
      :
      print NEWFILE "</head><body>\n";
      }
      }

      Danke und Grüsse
      Martin

      1. Hi,

        Geht dann folgendes?

        [schnipp]

        ja, das funktioniert. Ich würde allerdings statt -f ("is a file") -e ("exists") verwenden, da sonst evtl. gleichnamige Verzeichnisse überschrieben werden könnten (bzw. dies anderweitig für Probleme sorgt).

        Ferner solltest Du im if- und im else-Teil verschiedene Ausgaben nach STDOUT (also ganz normale print-Befehle) schreiben, damit der Benutzer weiß, daß es ggf. nicht geklappt hat.

        Cheatah

        1. Hi Cheatah,

          zunaechst einmal danke!

          Ich bin jetzt nicht zuhause ("teamone" kann man sich gut merken ;-)), werde das aber morgen früh checken.

          Welche Literatur (online oder Hardcover) wuerdest Du denn empfehlen, um etwas in die Materie einzusteigen?
          Ich habe mich vorhin auf der offline-Version von wwww.perl.com versucht etwas schlau zu machen - es war dann doch eher verwirrend. Vor allem fuer jemanden, der vorher noch nicht so sehr viel programmiert hat (ausser etwas TurboPascal vor ein paar Millionen Jahren...).

          Gruesse und Guten Morgen

          Martin

          1. Hi,

            Ich bin jetzt nicht zuhause ("teamone" kann man sich gut merken ;-)), werde das aber morgen früh checken.

            tu das - von SelfHTML lohnt sich auf jeden Fall der Download!

            Welche Literatur (online oder Hardcover) wuerdest Du denn empfehlen, um etwas in die Materie einzusteigen?

            Tja, ich bin mit SelfHTML, einigen Scripts von http://www.worldwidemart.com/scripts und gelegentlich auch http://www.cgi-resources.com eigentlich recht weit gekommen. Dazu dann die bei Perl mitgelieferte Doku (ist wirklich wichtiges Handwerkszeug!), ein paar Dinge habe ich auch aus http://www.phy.uni-bayreuth.de/~btpa25/perl/perl_main.html, und tja, mein erstes Buch ist dann das "Perl Kochbuch" aus dem O'Reilly-Verlag. http://www.perl.com ist natürlich auch regelmäßige Anlaufstelle, aber weniger, wenn ich nach Problemen suche (Module ausgenommen, die findet man dort bei CPAN).

            Ich habe mich vorhin auf der offline-Version von wwww.perl.com versucht etwas schlau zu machen - es war dann doch eher verwirrend. Vor allem fuer jemanden, der vorher noch nicht so sehr viel programmiert hat (ausser etwas TurboPascal vor ein paar Millionen Jahren...).

            Kann ich Dir nachfühlen :-)

            Gruesse und Guten Morgen

            Danke, dito ;-)

            Cheatah