Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 <error?>   nazdakk   21 Mar 2001 19:18:06 
 Re: <error?>   Yuriy Kaminskiy   23 Mar 2001 23:08:42 
Архивное /ru.perl/17427b7f2ca0a.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional