PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 170


while (©lines && Schildof($root, $lines[$#lmes])) {

&input($him = pop(@lmes)),

push(@kid, $him), i} if (@kid) {

local($mysize) = ($root =" /"(\d+)/),

for (@kid) { $mysize -= (/"(\d+)/)[0], }

push(@kid, $mysize  ) if $size ' = $mysize, } @kid = &sizesort(*kid),

sub output {

local($root, *kid, $prefix) = @_[0,0,1],

local($size, $path) = split(  , $root),

$path =~ s1 */'',

$line = sprintf('%${width}d %s , $size, $path),

print $prefix, $lme, '\n',

$prefix = $line,

Sprefix =~ s/\d /I /,

$prefix =- s/["|]/ /g,

local(Swidth) = $kid[O] =" /(\d+)/ && length( $1 ),

for (iakid) { &output($_, Sprefix), },
}                                                      продолжение


178   Глава 5 • Хэши

Пример 5.4 (продолжение)

sub sizesort  {

local(*list,  ©index) = shift; sub bynum { $mdex[$b] <=> $index[$a]; for (©list)  { push(@mdex,   /(\d+)/),   } @list[sort bynum O..$#list];

sub childof {

local(@pair) = $_;

for (@pair)  { s/~\d+\s+//g,   s/$/\//,   }

index($pair[1],   $pair[0]) >= 0, }

Итак, какой же хэш используется старой программой dutree? Правильный ответ — %mam ¦ :, то есть символьная таблица Perl. He стоит и говорить, что эта программа не будет работать с use strict. Мы рады сообщить, что новая версия работает втрое быстрее старой. Дело в том, что старая версия постоянно ищет пе­ременные в символьной таблице, а новая обходится без этого. Кроме того, нам удалось избежать медленных вызовов split для занимаемого места и имени ката­лога. Однако мы приводим и старую версию, поскольку она весьма поучительна.



Поиск по шаблону


[Искусство это] шаблон, наполняемый разумом. Сэр Герберт Рид, «Значение Искусства»

Введение

В большинстве современных языков программирования существуют примитив­ные средства поиска по шаблону (обычно вынесенные в дополнительные библио­теки), но шаблоны Perl интегрируются на уровне самого языка. Они обладают возможностями, которыми не могут похвастаться другие языки; возможностями, которые позволяют взглянуть на данные с принципиально новой точки зрения. Подобно тому, как шахматист воспринимает расположение фигур на доске как некий образ, адепты Perl рассматривают данные с позиций шаблонов. Шаблоны записываются на языке регулярных выражений1, богатом знаками препинания, и позволяют работать с замечательными алгоритмами, обычно доступными лишь экс­пертам в области компьютерных технологий.




- Начало -  - Назад -  - Вперед -