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

时间:2012-02-07 08:26:14

标签: perl cpan perl6 rakudo raku

是否可以使用Rakudo Perl 6的CPAN中的Perl 5模块?

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

更新

来自早期Perl 6模块的这个时髦代码:

use CGI:from<perl5>;

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

2 个答案:

答案 0 :(得分:8)

内嵌:: Perl5的

http://modules.perl6.org/

获取
panda install Inline::Perl5

以下示例显示了如何导入和调用Perl 5模块Text::Unidecode,&#34;最后的Unicode音译&#34;来自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仍然有效。 Blizkost现在完全无关紧要。

使用v5

panda install v5

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

blizkost

在ParotVM上使用Perl 5并使用VM提供互操作性已有数年的努力。由于这是特定于VM的解决方案,因此它已被放弃,转而使用Inline :: Perl5。

答案 1 :(得分:-1)

blizkost项目旨在使用来自Rakudo / Parrot的perl5代码。然而,AFAIK处于开发的早期阶段,可能无法用于实际代码。