Nice post grinder ++ A couple of problems with your code though. First you need to
specify the full path to the files for stat - outside of the ./ dir your code returns the dreaded 1970 date for everything.
Second you use $count = 0; next if $count++ > 10 which saves the first 11 files as $count is 0 to start (File 1), 10 at file 11 (still not > 10)
and 11 at file 12. You need either >=10 or ++$count. No doubt this relates to the reversal of the inequality.
I have supplied some reassuring test code below which lists the files with date and shows what will get unlinked. You also need the full path for
the unlink.
cheers
tachyon use strict;
my $directory = 'c:/windows';
opendir D, $directory or die "Cannot open directory $directory: $!\n";
my %age;
while( my $file = readdir D ) {
next if $file eq '.' or $file eq '..';
$age{"$directory/$file"} = (stat "$directory/$file")[9];
}
closedir D;
my $count = 0;
foreach my $file ( sort {$age{$b} <=> $age{$a}} keys %age ) {
if ($count++ < 10) {
print "Newest: $file (@{[scalar localtime $age{$file}]})\n";
}
else {
print "For Delete: $file (@{[scalar localtime $age{$file}]})\n
+";
# unlink $file; # uncomment at your own risk!
}
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|