Как я могу использовать модули Perl 5 из Perl 6? - PullRequest
13 голосов
/ 07 февраля 2012

Можно ли использовать модули Perl 5 из CPAN из Rakudo Perl 6?

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

Обновление:

И что это за прикольный код из какого-то раннего модуля Perl 6:

use CGI:from<perl5>;

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

Ответы [ 2 ]

8 голосов
/ 06 декабря 2014

Инлайн :: Perl5

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

panda install Inline::Perl5

В следующем примере показано, как импортировать и вызывать модуль Perl 5 Text::Unidecode, «Транслитерация Юникода последней инстанции» из 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 на Github

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

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

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

panda install v5

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

blizkost

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

0 голосов
/ 07 февраля 2012

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

...