4

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

此代码适用于两个版本或 perl,没有错误:

BEGIN {
    if( $] ge 6){
        require Perl6::Form;
        Perl6::Form::->import();
    }
}

但是我不知道在 Perl5 上运行时如何“分离”Perl6 代码。

if( $] ge 6){ # Perl6
    print form
    ...
    ...
} else { # perl5
    format STDOUT =
    ...
    ...
} 

当我在 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.

我已经简要地查看了Text::CPP,但我不想依赖正在安装的编译器。任何建议,将不胜感激。

4

1 回答 1

12

如果使用 Perl6 我需要使用“perl6::Form”

perl6::Form 不存在。

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

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

但是我不知道在 Perl5 上运行时如何“分离”Perl6 代码。

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

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

于 2013-08-14T15:15:38.073 回答