|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Yuriy Kaminskiy 2:5020/517.21 23 Mar 2001 23:08:42 To : nazdakk Subject : Re: <error?> -------------------------------------------------------------------------------- >>>>> On 18:18 21/3/2001, nazdakk <2:5020/1868.23> writes: n> отсортироваться по дате последнего обращения... n> use file::stat; use File::stat; # Регистр важен! Только зачем, если ты пользуешься by-number интерфейсом из CORE::stat? n> scandir("e:/files/"); n> sub scandir { local *DIR; n> opendir(DIR, $_[0]); >> foreach $name (sort{(stat($a))[8] <=> (stat($b))[8]} readdir(DIR)) { 0. А с чего ты взял, что под winXX есть atime? 1. Hеэффективно (особенно, на winxx). Так ты получишь O(n*log n) вызовов stat. Более эффективный вариант - my $path = $_[0]; foreach my $ref (sort {$a->[1]->atime <=> $b->[1]->atime} grep {(/^\.\.?$/ || -d "$path/$_") ? undef : defined(($_ = [ $_, stat(\*_) ])->[1]) } readdir(DIR)) { print "$ref->[0] \->> ",$ref->[1]->size,"\n" } Проверено, работает :) [под linux/perl5.004] n> if (($name ne ".") && ($name ne "..")) { n> $filename=$_[0].$name; n> next if (-d $filename); n> ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime, n> $ctime,$blksize, $blocks) = stat($filename); n> print " $name ->> $size\n"; n> } n> } n> closedir(DIR); n> } -- Yuriy Kaminskiy. --- Gnus v5.2.25/XEmacs 19.14 * Origin: none (2:5020/517.21@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/17427b7f2ca0a.html, оценка из 5, голосов 10
|