Thread Datei oder Verzeichnis nicht gefunden (18 answers)
Opened by hcx at 2011-07-02 18:04

hcx
 2011-07-02 18:04
#150078 #150078
User since
2011-07-02
5 Artikel
BenutzerIn
[default_avatar]
Hallo PERLMONKS und Gurus,

auch auf die Gefahr hin gesteinigt zu werden ich blicke bei diesem Skript hier nicht mehr wirklich durch. Ich möchte in einem Ordner $ordner = <STDIN>;
sämtliche Dateien außer . und .. sowie Links löschen. Ist dies erfolgt soll der dann leere Ordner gelöscht werden.

Dazu habe ich dieses kleine Skript geschrieben:

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
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/perl -w 
# Skript loescht saemtliche Dateien im Ordner, den wir hier eingeben und wenn der Ordner leer ist loescht es den leeren Ordner
# Symlinks werden nicht gelöscht
use strict;
my $sammel_pfad = "/home/uli/logs";
my $log_datei = ">$sammel_pfad/loesch_logfile.txt";

print "In welchen Ordner soll ich alle Dateien loeschen?\n";
my $ordner = <STDIN>;
chomp $ordner;
print "Danke soll ich dann wirklich alle Dateien in $ordner loeschen?\n";

my $entscheidung = <STDIN>;
chomp($entscheidung);

if($entscheidung eq 'j') {
        print "#\n#ALLE Dateien in $ordner  werden gelöscht\n#\n";
} else {
        print "#\n#Breche das Programm ab \n#\n";
        die;
}
open(LOGFILE, $log_datei) or die "Kann LOG_Datei $log_datei nicht oeffnen: $!\n";


&loesche($ordner);

print "#\n#\n# Schreibe ab jetzt in Log Datei $log_datei !\n#\n#\n";
#open(LOGFILE, ">$log_datei") or die "Kann LOG_Datei $log_datei nicht oeffnen: $!\n";
close LOGFILE;

# Funktion loescht nacheinander mittels foreach Schleife datei fuer datei im Ordner 
sub loesche {
 opendir(DIR, $ordner)or die "$!";
        my @remove = readdir(DIR);
        close(DIR);
        my ($ordner) = @_;    # Funktion loesche wird mit Argument $ordner aufgerufen

        foreach my $datei (@remove){
                if ("$datei" eq "." or "$datei" eq "..") {      # . und .. sollen nicht geloescht werden
                        next;
                }
                if (-l "$ordner/$datei")  {
                        print "Habe einen Link $datei  gefunden loesche diesen nicht\n";
                        next;   # überspinge  rest der schleife überspringen
                } else {
                        unlink("$ordner/$datei"); # unlink löscht dateien im Ordner


                        print LOGFILE "Hallo\n";
                        print LOGFILE "#\n#\n#\n";
                        print LOGFILE  "Habe die Datei $datei geloescht!\n";

                }


                         rmdir($ordner) or die $!; # rmdir löscht leere Verzeichnisse also den leeren Ordner

        }



Der Perl Comnpiler gibt mir zurück:
Datei oder Verzeichnis nicht gefunden at ./ordner_loeschen2.pl line 34, <STDIN> line 2.

Das verstehe ich als PERL Neuling so dass $ordner nicht gefunden wird
also dies hier niocht ausgeführt wird:

Code (perl): (dl )
 opendir(DIR, $ordner)or die "$!";


Wobei mir dies nicht wirklich was sagt <STDIN> line 2


Falls ich die Fehlermeldung richtig interpretiere, verstehe ich allerdings nicht, weshalb $ordner nicht gefunden respektive geöffnet wird.

Könnte mir das bitte jemand erklären, ich beisse mir seit Tagen daran die Zähne aus.

Danke

hcx

modedit Editiert von GwenDragon: Bitte Code in PERL oder CODE-Tags stellen; Titel gekürzt
Last edited: 2011-07-02 18:52:46 +0200 (CEST)

View full thread Datei oder Verzeichnis nicht gefunden