"Дмитрий Леонов. Использование Perl в интернет-технологиях" - читать интересную книгу автораforeach, который записывается как
foreach $i(@список) {} В этом случае скалярная переменная $i последовательно принимает значения элементов списка. Например, перебрать все элементы хэша, отсортированные по ключам, можно так: foreach $i(sort keys %a) { print $a{$i}."\n"; } При проходе по большому хэшу эффективнее использовать функцию each - ценой потери сортировки: while(($key, $value) = each(%a)) { } Для всех операторов цикла, кроме цикла с пост-условием, существуют операторы last, прерывающий выполнение цикла, next, переходящий к следующей итерации, и redo, обеспечивающий переход в начало текущего блока без проверки условия. Их можно использовать в сочетании с метками: OUTER: while(условие 1) { INNER: while(условие 2) if(условие 3) { next OUTER; #переход на следующую итерацию внешнего цикла } } } Функции записываются следующим образом: sub f { } и вызываются как f(); Значение из функции возвращается оператором return, при отсутствии его возвращаемым значением является результат последней выражения, вычисленного в функции. При передаче параметров в функцию они заносятся во встроенную переменную @_, доступ к элементам которой можно получить как к элементам обычного массива: $_[0] и т.п., а также через функции shift, pop и т.п. Таким образом, функции могут иметь переменное количество параметров. Переменные, используемые в функциях, по умолчанию имеют глобальную область видимости: sub f { |
|
|