Thread Probleme beim Zuweisen von Strings
(6 answers)
Opened by Reisser696 at 2008-12-09 19:44
Ich rauf mir hier gerade ein wenig die Haare - vielleicht kann mir ja jemand helfen (meine letzten Zotteln zu behalten).
Ich habe hier einen Perl-Script mit dem ich Verzeichnisse nach bestimmten Dateiendungen durchsuchen möchte und die dazu gehörigen Daten dann auf ihr Alter prüfen will um sie dann ggf zu löschen. Z.B über den Aufruf: cleanup.pl txt /home/ Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #!/usr/bin/perl use strict; # Alter der Dateien in Sekunden angeben my $age = 50000; # In Sekunden angeben! # Endung wird dreistellig übergeben my $ending = ($ARGV[0]); # Pfad wird übergeben my $path = ($ARGV[1]); # Arbeitsverzeichnis für temporäre Dateilisten my $workdirectory = "/home/edv"; # Logverzeichnis für gespeicherte Daten my $savedirectory = "/var/log"; # Counter auf Null setzen my $counter = 0; # Sicherheitsausgabe print "\nSuche alle Dateien mit Endung: $ending im Pfad: $path\n\n"; # Liste mit zu überprüfenden Dateien erstellen system("find $path -type f -name \*.$ending > $workdirectory/cleanup.list"); # Datei einlesen open (DATEI, "$workdirectory/cleanup.list") || die "Datei nicht gefunden"; foreach my $line ( <DATEI> ) { $counter++; # Dateistatistik mittels stat bestimmen my @stat = stat($line); print "Letzte Zugriffszeit:$stat[8]\n"; # JA/NEIN (True/False) Wert if ((time - $stat[8]) > $age) { # Dateien loeschen per unlink print "Gelöscht:$line"; unlink($line); } } close (DATEI); print "\nDateien:$counter\n\n"; Das ganze ist gerade im oberen Teil nicht hübsch - naja - funktioniert aber. Es handelt sich um ein paar tausend Dateien die auf den Servern liegen nebenbei. Im unteren Teil liegt dann der Hase im Pfeffer. Ich kann zwar ganz locker Zuweisungen wie my @stat = stat("/home/edv/test.txt); per Hand machen - dort kann er ein Stat auslesen. Sobald aber genau der gleiche Ausdruck im String $line enthalten ist (print zeigt genau diese Ausgabe) bekomme ich nur eine 0 bzw nichts als Output. Also eben das hier: my @stat = stat($line); print($line); zeigt aber dennoch /home/edv/test.txt Gleiches gilt für den unlink ganz unten. Auch hier: wenn ich einen "festen" Stringausdruck einfüge klappts - sobald das ganze im String ist nicht mehr. Abschließende Frage bevor ich hier hinwerfe: wie bekomme ich es hin dass der String richtig zugewiesen wird? Signaturen werden völlig überbewertet
|