Перевод официальной документации Perl 6.

Отличия между Perl 5 и Perl 6 (часть 1).

| 0 Comments | 0 TrackBacks

Ну вот, наконец-то вышел первый официальный выпуск компилятора 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;

Символы ' и - можно использовать в рамках идентификаторов, если они находятся между двумя буквенными символами.

No TrackBacks

TrackBack URL: http://blog.perl6doc.ru/mt-tb.cgi/26

Leave a comment

About this Entry

This page contains a single entry by Dinar published on August 2, 2010 8:42 AM.

Отличия между Perl 5 и Perl 6 (часть 2). is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.