是使用来自Rakudo Perl 6的CPAN的Perl 5模块的一种方法吗?
例如,如何在Perl 6中使用尚未移植的可靠的Perl 5模块CGI.
更新:
还有一些早期的Perl 6模块的这个时髦的代码呢?
use CGI:from<perl5>;
是否使用“:from”指令来唤起某种Perl 5兼容性层.似乎找不到任何关于它的文件.
解决方法
内嵌:: Perl5的
panda install Inline::Perl5
以下示例显示如何从Perl 6导入和调用Perl 5模块Text :: Unidecode,“最后的Unicode音译”.
如果没有,请安装模块
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仍然有效. Blizkost现在完全无关紧要.
使用v5
panda install v5
截至2014年底,v5不会在Rakudo JVM下编译.它根据Rakudo在MoarVM上编译(它也不会在ParrotVM上的Rakudo下编译).
blizkost
几年前的努力,将Perl 5带到ParotVM上,并使用虚拟机提供互操作性.由于这是一个VM特定的解决方案,所以它已被放弃,支持Inline :: Perl5.