How can I use Perl 5 modules from Perl 6?

2020-06-09 03:51发布

问题:

Is the a way to use Perl 5 modules from CPAN from Rakudo Perl 6?

For example, how can I use the venerable Perl 5 module, CGI, which hasn't been ported yet, in Perl 6.

Update:

And what this funky code from some early Perl 6 module:

use CGI:from<perl5>;

Is the :from<perl5> directive used to evoke some kind of a Perl 5 compatibility layer? Can't seem to find any documentation about it.

回答1:

Use Inline::Perl5.


The following example shows how to use the CPAN hosted Perl 5 module Text::Unidecode ("the Unicode transliteration of last resort") in Raku.

First, install Inline::Perl5 if you don't already have it installed:

zef install Inline::Perl5

Now install the CPAN module if you don't already have it installed:

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

You can now use the installed Perl module by writing a use statement with an appended :from<Perl5> (with an uppercase P, not :from<perl5>) :

use Text::Unidecode:from<Perl5>;
say Text::Unidecode::unidecode 'Solidarność';

displays:

Solidarnosc

See also other SO posts about Inline::Perl5.



回答2:

There is blizkost project that aims to use of perl5 code from Rakudo/Parrot. However it is AFAIK in quite early stage of development and probably not usable for real code.