Как стать автором
Обновить

Комментарии 23

Флаг /r действительно порадовал, давно пора уже было.
В убунте по прежнему 5.10! %(
App::perlbrew тебя спасет. Можно поставить в систему разные версии perl и радоваться 8-)
Ого… похож на RVM. отличный шаг вперёд.
Основным тут кажется работа push/keys/values/each etc со ссылками, что убирает @{}, %{} мусор.
Неплохо, да. Но если раньше глядя на код было явно видно с какими структурами идет работа, то теперь все чуть сложнее стало. Перлоненавистники порадуются :)
в этом весь perl
Я вас уверяю, на перле тоже можно писать читаемый код.

Другое дело что некоторые его последователи любят все пихать в одну строчку с тремя map'ами и парой grep'ов. Это апупеть как круто, но хвалиться этим можно только в среде таких же эээээ… гиков :)
и в этом весь perl.
Глупости… так было давно, сейчас так не пишут.
А в одну строчку море кода на любом языке могут напихать.
пишут, пишут ) и не только на Perl :)

хорошо хоть, не везде.
Это было включено в экспериментальном режиме, так что не факт, что останется навсегда.
А сейчас в чём неоднозначность?
Если рядов с этими ключевыми словами скаляр — это указатель на массив или хэш, а если списочный тип то это непосредственно массив или хэш. Никакой неоднозначности нет.
Надо протестировать потребление памяти, интересно.
По сравнению со стааааарой версией v5.8.9 (build 825) на задаче обработки многоуровневых хэшей с массивами (процесс занимал почти полгига в памяти) получен примерно такой результат:

1. Потребление памяти меньше примерно на 10%.
2. Скачков потребления не было замечено, т.е. можно предположить что лучше используется освобождаемая память внутри процесса (надеюсь, то что perl ничего не отдает системе назад все знают?)
3. Быстрее почти на 20% (на 18,5 если быть точным)

Вот как-то так.
sudo zypper up -r Tumbleweed perl
Не совсем понятно для чего был введен модификатор . Чем не устраивало то, как было раньше:

По новому: $new = old =~ s/cat/dog/r;
По старому: ($new = $old) =~ s/cat/dog/;
По-старому некрасиво (IMHO). Ну и без TIMTOWTDI никуда. :-)
Разница в том что по-новому не нужна переменная, можно, например, передать в функцию результат замены не модифицируя исходную строку и не используя дополнительных переменных, это удобно.
say s/.../.../r
some_func( s/.../../r )
Да, спасибо. Уже понял. Действительно удобно.
два симвова вместо одного
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории