|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igor Nikolaev 2:5030/266 17 Jul 2001 03:48:55 To : Nikolay Pichtin Subject : Re: Ускорить выполнение -------------------------------------------------------------------------------- Nikolay Pichtin <Nikolay_Pichtin@f30.n5056.z2.fidonet.org> wrote: > Есть скрипт, который читает каталог и отбирает > имена файлов по расширению. > Можно-ли оптимизировать скрипт с целью ускорения работы? > if ( opendir (DIR, "$full_upload_dir") ) { > @dirs = map {/(.+)/} sort {$a <=> $b} readdir(DIR); > closedir (DIR); > } > foreach $lin(@dirs) { > ($fn,$suff) = split (/\./,$lin); > while ( ($first,$last) = each(%typs) ) { > if ($suff eq $first){ > push (@files,$fn,$suff); > } > } > } > В хеше %typs содержатся необходимые расширения. Кто такие 'расширения'? Какое к примеру расширение у файла с гордым именем '2001.07.16.log.gz'? Каким местом эти расширения содержатся в хеше? Hужно получить только список файлов по образцам? Только что обсуждали, если лень каталог читать, то встань в него (так понятнее) и используй <>. use File::Glob; my @ext = qw(*.ps user* *.tar *.gz *.07.* log.*); chdir ($ARGV[0] || '.'); my @files = < @ext >; Если не лень то снова никакой хеш не нужен: my $pat = join '|', qw(\.ps$ ^user \.tar$ \.gz$ \.07\. ^log\.); opendir D, ($ARGV[0] || '.') or die "Can't open $ARGV[0]\n"; my @files = grep { /$pat/o } readdir D; close D; Hа всякий случай распечатаем чего под руку попалось: { local $, = ' '; local $\ = "\n"; print @files; } -- Игорь Hиколаев P.S. Извини, просто интересно - где учат так программы писать? -- И --- ifmail v.2.12.os.sensi * Origin: Поиск методом пузырька (2:5030/266@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/1341668ba8c8b.html, оценка из 5, голосов 10
|