petz: Zahl vs String (Datum)

Beitrag lesen

Hallo

Ich habe ein Skript, das täglich einmal läuft. Dies erledigt einige nicht relevante administrative Aufgaben und funktioniert reibungslos.

Zum Monatswechsel soll es zudem eine Datei umbenennen und einen <a>-Tag in eine Textdatei schreiben (href=ebenUmbenannteDatei). Diese Textdatei wird später aus einem anderen Skript in eine HTML-Seite eingebunden. Grundsätzlich funktioniert dies auch. Problem ist, dass das Skript den neuen Namen der Datei falsch erzeugt.

Es soll an jedem ersten des Monats die datei DATEI.html in DATEIvormonatjahr.html umbenennen. Bsp: am ersten Dezember: DATEI.html -> DATEI1104.html. Dazu erzeuge ich erstmal ein Date und frage ab, ob es der erste eines Monats ist. Falls dies der Fall ist, wird die Datei umbenannt und ins Textfile geschrieben. Ich hab nun diverse Dinge ausprobiert, leider hilft es nix. Wenn ich das Systemdatum zu Testzwecken auf 1.12. stelle, wird die Datei entweder in DATEI0-1204.html oder DATEI0004.html umbenannt. Dies je nach dem, ob ich mit dem Einstelligen, oder dem Zweistelligen Monat rechne. Ich seh vor lauter Bäumen den Wald nicht. Wäre schön, wenn Sich jemand kurz die Zeit nehmen könnte und den untenstehenden Code kurz anschauen könnte. Danke für Eure Unterstützung.

#!C:\Program Files\Perl\bin\perl.exe

use strict;

my $Jahr1;
my $Monat1;
my $Monatstag1;
my $Vormonat;
my $History;

#Aktueles Datum ermitteln
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
$Monat+=1;
$Jahrestag+=1;
$Jahr-=100;
$Monatstag1 = $Monatstag; #monatstag einstellig
$Jahr1 = $Jahr;    #jahr einstellig
$Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat;
$Jahr = $Jahr < 10 ? $Jahr = "0".$Jahr : $Jahr;
$Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag;
$Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden;
$Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten;
$Sekunden = $Sekunden < 10 ? $Sekunden = "0".$Sekunden : $Sekunden;

#Prüfen, ob bereits eine datei besteht
if (-e "G:/datei.html") {
 #Am ersten des Monats, bestehende Auswertung umbenennen und Eintrag in history-File vornehmen
 if ($Monatstag1 == 1) {
  if ($Monat1 == 1) {
   $Vormonat = 12;
   $Jahr -= 1;
  }
  else{
   $Vormonat -= $Monat1;
   $Vormonat = $Vormonat < 10 ? $Vormonat = "0".$Vormonat : $Vormonat;
  }

rename("G:/datei.html","G:/datei".$Vormonat.$Jahr.".html");
  open(HISTORY, ">>D:/file.history");
  print(HISTORY "<br><a href="datei".$Vormonat.$Jahr.".html">Statistik ".$Vormonat."/".$Jahr."</a>");
  close(HISTORY)
 }
}

Beste Grüsse
Meister Petz