Как я могу использовать Perl 5 модулей от Perl 6?

Является ли способ использовать модули Perl 5 от CPAN от Rakudo Perl 6?

Например, как я могу использовать почтенный модуль Perl 5, CGI, который еще не был перенесен, в Perl 6.

Update:

И что этот фанковский код из раннего модуля Perl 6:

use CGI:from<perl5>;

Является ли директива "from from from" для вызова своего уровня совместимости с Perl 5. Кажется, не найти документацию об этом.

Ответы

Ответ 1

Инлайн:: Perl5

Получите его от http://modules.perl6.org/

panda install Inline::Perl5

В следующем примере показано, как импортировать и вызывать Perl 5 module Text::Unidecode, "транслитерацию Unicode последней инстанции" с Perl 6.

Установите модуль, если у вас его нет

perl -MCPAN -e "install Text::Unidecode"

Теперь код

use Inline::Perl5;
use Text::Unidecode:from<Perl5>;
my $result = Text::Unidecode::unidecode('Solidarność');
say($result);

В качестве альтернативы более гибким способом является импорт Inline:: Perl5 самостоятельно, создание нового контекста и оценка вызова функции в этом контексте

use Inline::Perl5;
my $p5 = Inline::Perl5.new;
$p5.use('Text::Unidecode');

my $result = $p5.call('Text::Unidecode::unidecode', 'Solidarność');
say($result);

В любом случае, это печатает

./perl6-m ~/perl/usefrom5.pl 
Solidarnosc

Более длинный обзор доступен в Readme on Github

Историческая перспектива

Ранее существовали еще два проекта по совместимости. Используйте v5 и проект blizkost. V5 все еще работает, несколько. Близкость сейчас совершенно неактуальна.

Использовать v5

panda install v5

По состоянию на конец 2014 года, v5 не компилируется под JVM Rakudo. Он компилируется под Rakudo на MoarVM (он также не компилируется под Rakudo на ParrotVM).

blizkost

Несколько лет назад, чтобы принести Perl 5 на ParotVM и использовать виртуальную машину для обеспечения совместимости. Поскольку это решение, специфичное для VM, оно было отменено в пользу Inline:: Perl5.

Ответ 2

Существует проект blizkost, целью которого является использование кода perl5 от Rakudo/Parrot. Однако AFAIK находится на довольно ранней стадии разработки и, вероятно, не используется для реального кода.