Что такое "Современный Perl"?

Я много слышал об этом "Современном Perl". Что это?

Одна из вещей, которые я слышал, это новый открытый синтаксис:

open my $FH, '<', $filename

а не

open FH, "<$filename";

Что еще в Modern Perl?

Ответы

Ответ 1

Чтобы добавить некоторые особенности к обзору deinst, Modern Perl:

  • использует Perl 5.10 новые функции, например инструкции switch (given/when) и say
  • следует хорошей практике программирования Perl, например use strict и use warnings
  • может использовать Modern:: Perl модуль CPAN для упрощения всего этого
  • использует Moose для написания высокоуровневого OO-кода

Ответ 2

Чтобы привести источник ,

Современное программирование на Perl, около 2010 года, опирается на собранную мудрость всего Perl экосистема. Пришло время написать элегантную, надежную, удобную, хорошо проверенную и предсказуемую код.

См. также книгу. И эта цитата из книги

Современный Perl - это беспроигрышное описание того, как работают опытные и эффективные программисты Perl 5. Они используют языковые идиомы. Они используют CPAN. Они узнают Perlish, и они демонстрируют хороший вкус и мастерство и полное понимание Perl.

Ответ 3

Современный Perl не является надлежащим существительным; это то, что люди могут сказать, чтобы ссылаться на код Perl, который использует функции, доступные только за последние X лет, где X будет отличаться от человека к человеку.

Информацию о различных изменениях в Perl см. в файлах perldelta, например, http://perldoc.perl.org/index-history.html.

Ответ 4

Чтобы быть конкретным для вашего вопроса, связанного с открытием дескриптора файла в современном Perl: вы должны использовать форму с тремя аргументами, а не в форме двух аргументов!

Используйте форму с тремя аргументами open, чтобы указать слои ввода-вывода (также называемые "дисциплин" ) для применения к дескриптору. Это влияет на обработку обработок read-write (подробнее см. http://perldoc.perl.org/functions/open.html). Например:

open(my $fh, "<:encoding(UTF-8)", "filename")
|| die "can't open UTF-8 encoded filename: $!";