Thread Probleme beim Zuweisen von Strings (6 answers)
Opened by Reisser696 at 2008-12-09 19:44

Reisser696
 2008-12-09 19:44
#117006 #117006
User since
2008-04-25
10 Artikel
BenutzerIn
[default_avatar]
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

View full thread Probleme beim Zuweisen von Strings