Новое в Perl 5.12 — часть II

| Комментариев: 3

См. также Новое в Perl 5.12 — часть I

each для массивов

Встроенная функция each работает с массивами. Она возвращает пары значений «индекс — значение», каждый раз сдвигаясь по массиву на единицу:

use v5.12;

my @a = 1..10;
while (my ($a, $b) = each @a) {
    say "$a, $b";
}

Эта программа печатает следующее:

0, 1
1, 2
2, 3
3, 4
4, 5
5, 6
6, 7
7, 8
8, 9
9, 10

Постфиксная форма when

when теперь выглядит еще более независимым от given. В Perl 5.12 возможно использовать when в качестве модификаторов инструкций, как это разрешено для if и unless.

use v5.10;

for ('a'..'z', 'A'..'Z') {
    say when /[aeiou]/i;
}

Локальный delete local для хешей

Комбинация ключевых слов delete local позволяет локально удалить элемент из хеша. После выхода из соответствующей области видимости хеш остается прежним.

use v5.12;

my %h = (
    alpha => 'a',
    beta => 'b',
    gamma => 'g',
);

say for keys %h; say; # gamma beta alpha

{
    delete local $h{beta};
    say for keys %h; say; # gamma alpha
}

say for keys %h; say; # gamma beta alpha

Кроме того

  • Perl 5.12 включает обновленные таблицы юникода.
  • В функциях работы со временем решена проблема 2038 года.
  • Разрешена перегрузка оператора qr.
  • Находясь внутри when, // ведет себя как || (э-м-м, требует осмысления).

Наконец, есть некоторые изменения в работе смартматчинга (в том числе, и в given/when), которые появились еще в Perl 5.10.1 (часть 1, часть 2).

Комментариев: 3

Удивил тот факт, что можно локализировать ключ хешал с лексической областью видимости ввиду того, что сам хеш нельзя локализировать )

Thanks Andy, great intro!

Она возвращает пары значений, каждый раз сдвигаясь по массиву на единицу

Оказалось, это не совсем так. each возвращает пару индекс—значение:

>miniperl.exe -e "@a = qw/a b c/; while (($x,$y)=each @a) {print qq/$x, $y\n/}"
0, a
1, b
2, c

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 30.03.2010 16:38. Автор — ash.

Предыдущая запись — Новое в Perl 5.12 — часть I

Следующая запись — Однострочники

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.