使Perl脚本在Perl 5和6中都能正常工作

Mar*_*ark 4 forms perl portability perl6 raku

我有一个需要在Perl 5和Perl 6环境中运行的Perl脚本.如果使用Perl6我需要在Perl5上使用"perl6 :: Form"我需要使用"Format".

此代码适用于两个版本或perl而不会出现错误:

BEGIN {
    if( $] ge 6){
        require Perl6::Form;
        Perl6::Form::->import();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何在Perl5上运行时"分离"Perl6代码.

if( $] ge 6){ # Perl6
    print form
    ...
    ...
} else { # perl5
    format STDOUT =
    ...
    ...
} 
Run Code Online (Sandbox Code Playgroud)

当我在Perl5上出错时,这不能干净地工作:

Unquoted string "form" may clash with future reserved word at /usr/bin/script.pl line 628.
Name "main::form" used only once: possible typo at /usr/bin/script.pl line 641.
Run Code Online (Sandbox Code Playgroud)

我简要地看了一下Text::CPP,但我不想依赖于正在安装的编译器.任何建议,将不胜感激.

ike*_*ami 12

如果使用Perl6我需要使用"perl6 :: Form"

perl6 ::表格不存在.

Perl6 :: Form是一个Perl5模块,提供类似于Perl6的功能form.

Perl6模块对Perl6 :: Form没有用,即使它可以运行它,因为它是语言的一部分.

但是我不知道如何在Perl5上运行时"分离"Perl6代码.

Perl6不是Perl5的一个版本.Perl5和Perl6是完全不同的语言.(Perl5的最新版本目前是18.1)我看不出你怎么认为你可以让两者都执行一个程序.

分离Perl5程序和Perl6程序的最佳方法是将它们放在不同的文件中.如果您需要将它们放在同一个文件中,您需要说明我们需要帮助您找到合适的解决方案.

  • 我称C和Klingon*完全*不同的语言,但我认为我们已经同意它们的不同之处在于编写有效的Perl5和有效的Perl6代码只是一个特技而不是任何有用的代码. (2认同)
  • @teodozjan,你和C和C++一样错了.C主要是C++的一个子集,但Perl5不是Perl6的子集.您不能假装Perl5代码是Perl6代码,就像您可以假装C代码是C++代码一样,这就是重点.你不能让一段代码成为有效的Perl5和Perl6代码.请重读OP并避免进一步出于情绪激动的偏离主题的回复. (2认同)