############################################################################################ # 3 Block hier werden die Transactionlog-Dateien geprüft  sub runSqlTrnCheck    {      #Überprüfung LogDatei-Verzeichnis                    # Flag, ob die Gesamtprüfung positiv ist.      # 1 = nein, d.h. In mindestens einem Fall war keine aktuelle Backup-Datei vorhanden.      # 0 = ja, d.h. es war stets eine aktuelle Log-Datei vorhanden.      my $runSQLTrnCheck = 1;            &printLogEntry ("INFO","Verzeichnischeck beginnt");              my $dir = '\\\\XXXXXXX\\f$\\Log\\MSSQL$XXXXXX\\SqlSrvJobs';      opendir(DIR,$dir) or die $!; # Verzeichnis "öffnen"        print LogDatei $dir;      my @verzeichnisse1 = grep{-l $dir .'/'.$_}readdir(DIR);      my $bool_runSqlTrnCheck = 0; #0 = Nein      for my $file(@verzeichnisse1)                {                 if(existsActBackup($dir.'/'.$file,1))            {                   $bool_runSqlTrnCheck = 1;  #1 = Ja               &printLogEntry ("DEBUG","LOG Dateien vorhanden" . $bool_runSqlTrnCheck . " LOG-Dateien gefunden!");                &printLogEntry ("DEBUG", $file . @verzeichnisse1 . " LOG-Dateien im Verzeichnis " . $dir . " vorhanden!");            }                     }           if ($bool_runSqlTrnCheck == 1) # 1= Ja             {                &printLogEntry ("INFO","Es besteht in dem Verzeichnis mind. eine aktuelle LOG-Dateien!");             }           else                   {               &printLogEntry ("ERROR", "Es besteht in dem Verzeichnis" . $dir . "keine aktuelle LOGdatei!");               $runSQLTrnCheck = 0;             }           unless($runSQLTrnCheck)             {               &printLogEntry ("ERROR", "LOG-Dateien unvollständig !!!!!");             }             else            {              &printLogEntry ("ERROR","Das zu prüfende Verzeichnis wurde nicht gefunden! Bitte prüfen!!");              $runSQLTrnCheck = 0;            }  # end of: if ( -e $bkupDirectory )      return $runSQLTrnCheck   # Hier wird der ermittelte Rückgabewert aus der Subroutine übergeben!                              }# End of: sub runSqlTrnCheck           #***************************   # ++++++++++++++++SubRoutinen++++++++++++++++++++++++++++ # Subroutine1 BackupCheck-Zeitstempel # Hier wird geprüft ob aktuelle Datei vorliegt oder nicht # return: #  0 = Die überprüfte Datei ist nicht aktuell genug #  1 = Die überprüfte Datei ist aktuell genug  sub existsActBackup   {     my ($file,$max_age) = @_;     my $tmpValue = 0;     #print LogDatei $tm;     my $age = (time - (stat($file))[10]) / (60 * 60 * 24);     if ($age < $max_age)       {             $tmpValue = 1;         &printLogEntry ("INFO","Aktuelle Dateien vorhanden!");         &printLogEntry ("INFO","file  stat($file)");       }     else       {           $tmpValue = 0;           }       return $tmpValue;   };