如何使用Perl 6中的Perl 5模块?

Gen*_*neQ 14 perl cpan rakudo raku

是从Rakudo Perl 6使用CPAN的Perl 5模块的方法吗?

例如,如何在Perl 6中使用尚未移植的古老的Perl 5模块CGI.

更新:

这个早期Perl 6模块的这个时髦代码是什么:

use CGI:from<perl5>;
Run Code Online (Sandbox Code Playgroud)

是否使用":from"指令来唤起某种Perl 5兼容层.似乎找不到任何关于它的文档.

use*_*610 9

内嵌:: Perl5的

http://modules.perl6.org/获取

zef install Inline::Perl5
Run Code Online (Sandbox Code Playgroud)

以下示例显示如何Text::Unidecode从Perl 6 导入和调用Perl 5模块,"最后的Unicode音译".

如果没有,请安装模块

perl -MCPAN -e "install Text::Unidecode"
Run Code Online (Sandbox Code Playgroud)

现在的代码

use Inline::Perl5;
use Text::Unidecode:from<Perl5>;
my $result = Text::Unidecode::unidecode('Solidarno??');
say $result;
Run Code Online (Sandbox Code Playgroud)

或者,更灵活的方法是自己导入Inline :: Perl5,创建新上下文并在该上下文中评估函数调用

Solidarnosc
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,这打印

zef install Inline::Perl5
Run Code Online (Sandbox Code Playgroud)

Github上自述文件提供了更长的概述

历史的视角

此前,还有另外两个互操作性项目.使用v5和项目blizkost.V5仍然有效.Blizkost现在完全无关紧要.

使用v5

perl -MCPAN -e "install Text::Unidecode"
Run Code Online (Sandbox Code Playgroud)

截至2014年底,v5不在Rakudo JVM下编译.它确实在MoakVM上的Rakudo下编译(它也不能在ParrotVM上的Rakudo下编译).

blizkost

几年前努力将Perl 5引入ParotVM并使用VM提供互操作性.由于这是一个特定于VM的解决方案,因此它已被放弃,转而使用Inline :: Perl5.


bvr*_*bvr 0

有一个blizkost项目旨在使用 Rakudo/Parrot 的 perl5 代码。然而,据我所知,它还处于开发的早期阶段,可能无法用于真正的代码。