Perl 5.20

Несколько часов назад состоялся релиз новой мажорной версии языка программирования Perl. Разработка Perl 5.20.0 заняла примерно 12 месяцев с момента выпуска Perl 5.18.0 и содержит около 470 000 строк изменений в 2 900 файлах от 124 авторов.

В этой версии достаточно много новшеств:

Subroutine signatures То, чего многие так ждали, а другие возражали привычным «ненужно» sub foo ($bar, $baz) { print »\$bar=$bar, \$baz=$baz» } Таким образом теперь можно определять параметры функции в скобках после её имени. Есть и возможность задать значение по умолчанию sub bar ($foo, $baz=10) { print '$foo+$baz=', $foo+$baz } О других особенностях новой эксперементальной возможности можно прочитать в perldoc perlsub. Стоит отметить, что старый механизм получения параметров функции из @_ также остаётся в силе. Новый синтаксис для получения среза ключей-значений/индексов-значений для хешей/массивов %hash{…} и %array[…] соответственно %h = (blonk => 2, foo => 3, squink => 5, bar => 8); %subset = %h{'foo', 'bar'}; # срез ключ-значения для хеша # %subset теперь (foo => 3, bar => 8)

@a = «a»…«z»; @list = %a[3,4,6]; # срез индекс-значения для массива # @list теперь (3, «d», 4, «e», 6, «g») Постфиксное разыменовывание К старому доброму разыменовыванию ссылок, навроде @$foo и %$bar, был добавлен вариант постфиксного разыменовывания: $foo→@* и $bar→%* соответственно. Синтаксис для других типов ссылок можно посмотреть в perldoc perlref Механизм копирования при записи (copy-on-write) для строк Теперь при присвоении переменной значения другой строковой переменной не создаётся копии буфера вплоть до тех пор пока значение одной из переменных не будет изменено. Это увеличивает скорость присвоения и снижает потребление памяти. Теперь не потребуется передавать в функцию строковую переменную по ссылке, чтобы увеличить производительность.  perl, программирование

©  Linux.org.ru