[COLOR=#006600]#!/usr/bin/perl -w[/color]
[COLOR=#0000FF]use[/color] strict;
[COLOR=#0000FF]use[/color] File::Copy;
[COLOR=#0000FF]my[/color] $srcdir=[COLOR=#808080]"c:\\temp\\tektips\\subok2"[/color];
[COLOR=#0000FF]my[/color] $tgtdir=[COLOR=#808080]"c:\\temp\\tektips\\subok2\\copies"[/color];
[COLOR=#0000FF]my[/color] @fileinfo;
[COLOR=#0000FF]my[/color] $i=[COLOR=#FF0000]0[/color];
[COLOR=#FF0000]chdir[/color] $srcdir [COLOR=#FF8000]or[/color] [COLOR=#FF0000]die[/color] [COLOR=#808080]"unable to change to $srcdir"[/color];
[COLOR=#006600]# find dirs matching 10, 20, ...[/color]
[COLOR=#FF0000]opendir[/color] D,$srcdir [COLOR=#FF8000]or[/color] [COLOR=#FF0000]die[/color] [COLOR=#808080]"unable to open $srcdir"[/color];
[COLOR=#0000FF]my[/color] @subdirs = [COLOR=#FF0000]grep[/color] { /^[[COLOR=#FF0000]0[/color]-[COLOR=#FF0000]5[/color]][COLOR=#FF0000]0[/color]$/ } [COLOR=#FF0000]readdir[/color](D);
[COLOR=#FF0000]closedir[/color] D;
[COLOR=#006600]# find files in those dirs[/color]
[COLOR=#0000FF]foreach[/color] [COLOR=#0000FF]my[/color] $dir (@subdirs) {
[COLOR=#FF0000]opendir[/color] D,$dir [COLOR=#FF8000]or[/color] [COLOR=#FF0000]die[/color] [COLOR=#808080]"unable to open $dir"[/color];
[COLOR=#0000FF]my[/color] @files = [COLOR=#FF0000]grep[/color] { !/^[.]/} [COLOR=#FF0000]readdir[/color](D);
[COLOR=#006600]# store their names and modification times[/color]
[COLOR=#0000FF]foreach[/color] [COLOR=#0000FF]my[/color] $file (@files) {
$fileinfo[$i]{name} = $dir . [COLOR=#808080]"\\"[/color] . $file;
$fileinfo[$i++]{mtime} = ([COLOR=#FF0000]stat[/color]($fileinfo[$i]{name}))[[COLOR=#FF0000]9[/color]];
}
[COLOR=#FF0000]closedir[/color] D;
}
[COLOR=#006600]# sort the files by modification time, process the last 4[/color]
[COLOR=#0000FF]foreach[/color] [COLOR=#0000FF]my[/color] $file (([COLOR=#FF0000]sort[/color] { ${$a}{mtime} <=> ${$b}{mtime} } @fileinfo)[-[COLOR=#FF0000]4[/color]..-[COLOR=#FF0000]1[/color]]) {
[COLOR=#FF0000]print[/color] [COLOR=#808080]"Copying file ${$file}{name} (modified "[/color] . [COLOR=#FF0000]localtime[/color](${$file}{mtime}) . [COLOR=#808080]") to $tgtdir\n"[/color];
copy(${$file}{name},$tgtdir) [COLOR=#FF8000]or[/color] [COLOR=#FF0000]die[/color] [COLOR=#808080]"Copy failed: $!"[/color];
}