Ну вот, наконец-то вышел первый официальный выпуск компилятора Perl 6 Rakudo - это радует, так теперь появилась определенная уверенность в завтрашнем дне Perl 6 !
На позитивной ноте начинаю перевод официальной документации Perl 6. Итак, первым делом рассмотрим документ Perl6::Perl5::Differences в котором описываются отличия между пятой и шестой версиями Perl:
Perl6::Perl5::Differences - Отличия между Perl 5 и Perl 6
Данный документ предназначен для тех программистов, которые знают Perl 5, но не знают Perl 6 и интересуются их основными отличиями. Подробнее об отличиях рассказывается в справочном пособии Perl 6.
Документ в настоящее время описывает не все отличия в Perl 5 и Perl 6, со временем это будет исправлено.
Всякая всячина
Сигилы
Там, где раньше говорили:
my @fruits = ("яблоко", "груша", "банан");
print $fruit[0], "\n";
Вы бы сейчас сказали:
my @fruits = "яблоко", "груша", "банан"; say @fruit[0];
Или даже используюя оператор <>, который заменяет qw():
my @fruits = <яблоко груша банан>;
Обратите внимание, что теперь, когда мы хотим извлечь элемент, указываем
сигил @ вместо $. Возможно правильнее рассуждать так: сигил
переменной теперь является частью его имени, поэтому он ни в каком
случае не изменяется.
То же самое относится и к хэшам:
say "В этом году в феврале %days{'February'} дней"
Опять же, в сокращенной форме:
say "В этом году в феврале %days<February> дней"
Подробнее обо всем этом вы можете узнать из документа [S02]: "Имена и переменные".
Имена глобальных переменных предваряются твигилом
Да, твигил. Это второй символ в имени переменной. Для глобальных переменных таковым является *.
Было: $ENV{FOO} Стало: %*ENV<FOO>
Детальнее см. [S02]"Имена и переменные".
Новые способы ссылаться на элементы массивов и хэшей
Количество элементов в массиве:
Было: $#array+1 or scalar(@array) Стало: @array.elems
Индекс последнего элемента массива:
Было: $#array Стало: @array.end
Таким образом, последний элемент массива:
Было: $array[$#array] Стало: @array[@array.end] @array[*-1] # beware of the "whatever"-star
Подробнее об этом см. "[S02]: "Встроенные типы данных".
Удалены удвоенные символы подчеркивания ключевых слов
в Perl 5 в Perl 6 --- --- __LINE__ $?LINE __FILE__ $?FILE __PACKAGE__ $?PACKAGE __END__ =begin END __DATA__ =begin DATA
См. "[S02]: Удвоенные символы подчеркивания остались в прошлом"
для получения детальной информации. В примере выше используется твигил
? - он ссылается на данные, которые известны во время компиляции.
Контекст
Есть еще три основных контекста - void, item (прежний скалярный тип) и списковый(list). Имеются дополнительные более специализированные контексты и операторы, принуждающие к определенному контексту.
my @array = 1, 2, 3; # общий контекст элемента my $a = @array; say $a.WHAT; # печатает Array # строковый контекст say ~@array; # "1 2 3" # числовой контекст say +@array; # 3 # логический(boolean) контекст my $is-nonempty = ?@array;
Символы ' и - можно использовать в рамках идентификаторов, если они
находятся между двумя буквенными символами.
Leave a comment