• 将Perl5代码迁移到Perl6上的解决方案


    无论您是一个正在将Perl 5代码转换为Perl 6并遇到一些问题的程序员,还是您只是想了解如果您尝试将Perl 5程序移植到Perl 6可能会发生什么,本文应该回答您的问题。

    Perl 6文档已经包含了大部分(如果不是全部)你需要的文件要解决将Perl 5代码迁移到Perl 6时所面临的问题,请执行以下操作。但是,正如文件所述,重点是事实上的差异。我将尝试更深入地讨论具体问题,并根据我将相当多的Perl 5代码移植到Perl 6的经验,提供更多的第一手信息。

    Perl 6怎么样?

    很好,谢谢!自2015年12月第一次正式发布以来,RakudoPerl 6经历了数量级的改进和相当多的bug修复(总计超过14,000次提交)。到目前为止,已经出版了七本关于Perl 6的书。学习Perl 6作者布赖恩·D·福伊不久将由奥赖利出版,他是在精辟的基础上重新创作的。学习Perl(又称“拉玛书”)许多人已经认识并爱上了。

    用户分布拉库多星处于三个月的发布周期,在Perl 6生态系统。RakudoCompiler版本处于每月发布周期,通常包含30多人的贡献。Perl 6模块上载到Perl编程作者上传服务器(停顿)并使用PerlArchive综合网络(CPAN).

    网上Perl 6简介文档已经被翻译成12种语言,用他们的母语教了30多亿人关于Perl 6的知识。最近的化身Perl 6周刊自2014年2月以来,每周都会报告Perl 6的所有内容。

    CRO一个微服务框架,自始至终使用Perl 6的所有特性,提供HTTP1.1持久连接、HTTP2.0和请求多路复用,HTTPS提供可选的证书颁发机构。和一个Perl 6 IDE现在正处于(付费)beta版(把它想象成一个具有即时可交付性的Kickstart)。

    在Perl 6中使用Perl 5特性

    可以使用Inline::Perl5模块,制造全的CPAN任何Perl 6程序都可以使用。这可以被视为欺骗,因为它将嵌入perl 5解释器,因此继续依赖于perl(5)运行时。但它是吗?只需添加以下内容,就可以轻松地运行perl 6代码(如果您需要访问尚未移植的模块):只需将:从添加到USE语句,就像USE DBI:from;。

    2018年1月,我提议CPAN蝴蝶计划若要将Perl 5功能转换为Perl 6,请尽可能地将其转换为原始API。我说这是一个目标,因为Perl 5(作为一种编程语言)不仅仅是语法。如果问任何人Perl的独特卖点是什么,他们很可能会告诉您它是CPAN。因此,我认为是时候从Perl宇宙的这个角度出发了:

    以一种更现代的观点:

    换句话说,将作为Perl最重要元素的CPAN放在中间。

    转换语义

    要在Perl 6中本机运行Perl 5代码,还需要大量Perl 5语义。Perl 6中提供的对Perl 5语义的支持(可选)降低了Perl 5程序员在试图使用Perl 6编程时感知到的概念阈值。在家感觉更容易!
    自从CPAN蝴蝶计划发布以来,Perl 6中支持了100多个内置Perl 5函数,并具有相同的API。Perl 6中已有许多函数,但语义略有不同,例如,function shift() { [native code] }在perl 5中神奇地从@_(或@ARGV)如果没有指定参数;在Perl 6中,该参数是必需的。

    还将50多个Perl 5 CPAN发行版移植到Perl 6中,同时遵循最初的Perl 5 API。这些包括核心模块,如标量:util和清单:util,但也包括非核心模块,如案文:CSV和Memoize。CPAN上游的分布对生态系统有尽可能大的影响。

    摘要

    Rakudo Perl 6的成熟方式使得使用Perl 6现在是创建新的交互式项目的可行方法。能够使用可靠的、经过验证的Perl 5语言组件有助于降低开发人员使用Perl 6的阈值,并且它建立在Perl 5和Perl 6之和大于其部分的情况下。

  • 相关阅读:
    【Clickhouse2022.02 查询优化】
    设计模式简介
    标签属性 rel=“noopener noreferrer“ 原来这么有用
    LeetCode-907. 子数组的最小值之和【单调栈,数组】
    单链表(一篇带你掌握单链表)
    基于PyTorch使用LSTM实现新闻文本分类任务
    Spring中给容器中注册组件的4种方式
    操作配置文件保存方式(上位机)
    [Linux]线程同步
    解析:WMS仓库管理系统是什么,可以提供什么协助
  • 原文地址:https://blog.csdn.net/sinat_40572875/article/details/128141590