我们目前在组织中使用5.6版本的perl,以及MySQL和Apache,但现在客户端希望将perl升级到v5.24。
在开始升级之前,必须记住哪些主要变化和关键点?
我经常冲浪,但是从5.6到5.24没有找到任何有趣的东西。
建议从这么低的版本升级到高级版本。
答案 0 :(得分:13)
如果您选择转到所选版本的CPAN(在您的情况下为5.24.0 Perl 5.24.0),并在文档部分中查看有大量perlXXXdelta
个链接。这些文件描述了修订之间的更改,更重要的是它们详细说明了不兼容的更改。您还可以找到这些online。
版本5.24.0详细说明了pod/perldelta.pod
中的更改。
有许多值得注意的差异:
use utf8
。unpack()
和mkdir()
默认使用$_
$*
和$#
$AUTOLOAD
,printf
和sprintf
现在已被污染@INC
以允许升级核心模块IO::File
UNIVERSAL->import()
local($_)
从$_
:=
成为语法错误\s
现在匹配\cK
(垂直标签)readline()
$/ = \N
现在读取N个字符,而不是N个字节do SUBROUTINE(LIST)
成为语法错误Data::Dumper
输出已更改$_
已被删除chdir('')
不再将目录更改为主页我建议你仔细阅读这些文件(考虑到你的巨大版本,它会让你忙碌!)。如果您对代码库及其使用的perl功能有很好的了解,则尤其如此。这至少应该让您了解在迁移到更高版本时可能遇到的潜在陷阱。
我还想补充一点,鲍罗丁的答案值得一读,因为它详细介绍了处理升级的一个非常好的方法。我完全同意他的建议,尤其是单元测试 - 这是增加移民成功信心的可靠方法。如果您没有单元测试,那么这将是介绍它们的绝佳时机,并且能够证明为您的组织创建它们所花费的时间。
答案 1 :(得分:8)
我认为对差异进行自我教育会很有用,但是没有办法处理所有增量文件并检查所有差异来源是否可行
希望您的软件套件有单元测试。如果没有,那么现在就要了解它们为什么有用,并为你拥有的所有东西编写全面的测试
在您的版本控制系统中设置一个分支,并将use strict
和use warnings 'all'
添加到每个源文件的顶部(如果它们尚未存在)。运行您的测试套件,直到所有内容仍然编译并在Perl v5.5下完美运行
在测试系统上安装Perl v5.24并调整源,直到它们通过每个测试
Perl 5的工作人员在保持向后兼容性方面表现出色,但几乎肯定会有一些伤亡
当您有信心时,请使用新版本。会有更多的失败,每一个你都必须在测试套件中编写一个新的测试
我希望一切顺利
答案 2 :(得分:2)
如果您查看CPAN上的release page on for Perl 5.24,您会发现该文档包含许多名为" perl5xxxdelta"的文件。这些是每个新版Perl的发行说明。它们包含自上一版Perl以来所有内容都已更改的详细信息。
5.6到5.24是一个巨大的飞跃(大约30个版本!)我可以看到你未来的很多阅读!
也许将来您会意识到保持软件版本更新的重要性: - )
答案 3 :(得分:2)
建议从这么低的版本升级到高级版本。
绝对是的。 Perl 5团队非常努力地去除错误并为每个Perl版本添加功能,同时通过Perl 5的每个版本保持100%向后兼容性
如果您遇到任何问题,那将是因为可疑代码或因为新推荐的语法而发出警告