Leser: 23
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
#-#############################################
sub del_upl_files {
#-#############################################
my $usr_path = '/var/www/htdocs/usrUpl';
my $dir;
local $_;
opendir(UPL_DIR, $usr_path) or return;
while (defined($dir = readdir UPL_DIR)) {
$dir =~ /^\./ && next;
opendir(USR_DIR, "$usr_path/$dir") or next;
if (time - ((stat(USR_DIR))[8]) > 60) {
my @files = grep /\.dat$/, readdir USR_DIR;
closedir USR_DIR;
unlink "$usr_path/$dir/$_" for @files;
rmdir "$usr_path/$dir";
next;
}
closedir USR_DIR;
}
closedir UPL_DIR;
}
opendir(USR_DIR, "$usr_path/$dir") or next;
Quotestat() on unopened filehandle USR_DIR
2010-02-10T14:17:43 betterworldIch glaube, Du kannst Dirhandels nicht statten.
2010-02-10T14:35:24 Escape2010-02-10T14:17:43 betterworldIch glaube, Du kannst Dirhandels nicht statten.
Die Doku zu stat() sagt ja.
1
2
3
$ perl -lwe 'opendir my $f, "." or die $!; stat $f'
stat() on unopened filehandle $f at -e line 1.
(Are you trying to call stat() on dirhandle $f?)
QuoteWo denn?
Quotestat FILEHANDLE
stat EXPR
stat DIRHANDLE
stat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sidburn@sid:~$ perl -MData::Dumper -wle 'opendir my $f, "." or die $!; my @x = stat $f; print Dumper(\@x)'
$VAR1 = [
65026,
131,
16877,
78,
1000,
1000,
0,
'4096',
1262686289,
1265818007,
1265818007,
4096,
16
];
2010-02-10T16:48:21 sid burnQuoteWo denn?
Na, in der Doku halt!
http://perldoc.perl.org/functions/stat.html
Quotestat FILEHANDLE
stat EXPR
stat DIRHANDLE
stat
2010-02-10T15:22:25 betterworld2010-02-10T14:35:24 Escape2010-02-10T14:17:43 betterworldIch glaube, Du kannst Dirhandels nicht statten.
Die Doku zu stat() sagt ja.
Wo denn?
Quotestat() on unopened filehandle USR_DIR
opendir(USR_DIR, "$usr_path/$dir") or next;
2010-02-10T17:16:29 betterworldNehmen wir mal an, dass Du auch 5.8.8 hast (wo stat fuer Dirhandles offenbar noch nicht unterstuetzt war).
opendir ist dann erfolgreich und erzeugt ein Dirhandle. Daher wird auch "next" nicht aufgerufen. Du kannst auch readdir() benutzen, nur eben nicht stat(). Das erzeugt eine Warnung und gibt seinerseits einen Fehler zurueck.
Quotestat() on unopened filehandle USR_DIR
2010-02-10T17:20:20 EscapeDem widerspricht aber die Fehlermeldung
Quotestat() on unopened filehandle USR_DIR
opendir(USR_DIR, "$usr_path/$dir") or next;
opendir(my $fh_usr_dir, "$usr_path/$dir") or next;
2010-02-10T14:17:43 betterworldOder am besten Path::Class, das macht die ganze Sache viel einfacher.
1
2
use Path::Class qw(dir);
print "$_: ", ($_->stat or next)->mtime, "\n" for dir("/")->children;
2010-02-10T14:14:09 EscapeCode: (dl )local $_;
2010-02-10T14:22:42 betterworld
2010-02-10T16:59:05 biancaTritt der Fehler immer beim gleichen Verzeichnis auf oder wechselt das?
while (defined($dir = readdir UPL_DIR)) {
2010-02-10T17:10:23 Escape
2010-02-10T19:27:15 biancaSorry, dass ich Anstalten gemacht habe, mit zu denken.