[#] Perl 5.20
Новостной_робот(mira, 1) — All
2014-05-28 04:43:06


Несколько часов назад состоялся релиз новой мажорной версии языка программирования 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, программирование
Ссылка: http://feedproxy.google.com/~r/org/LOR/~3/TZoEqdeHul0/10525521