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")
  • Механизм копирования при записи (copy-on-write) для строк
    Теперь при присвоении переменной значения другой строковой переменной не создаётся копии буфера вплоть до тех пор, пока значение одной из переменных не будет изменено. Это увеличивает скорость присвоения и снижает потребление памяти. Теперь не потребуется передавать в функцию строковую переменную по ссылке, чтобы увеличить производительность.
  • Постфиксное разыменовывание
    К старому доброму разыменовыванию ссылок, навроде @$foo и %$bar, был добавлен вариант постфиксного разыменовывания: $foo->@* и $bar->%* соответственно. Синтаксис для других типов ссылок можно посмотреть в perldoc perlref

Подробнее...



Яндекс.Метрика
Счётчик ТЦ#65533;Ц LiveRSS: Каталог русскоязычных RSS-каналов