use*_*500 7 perl upgrade perl-module mod-perl2
我们目前在我们的组织中使用5.6版本的perl,以及MySQL和Apache,但现在客户端希望将perl升级到v5.24.
在开始升级之前,必须记住哪些主要变化和关键点?
我冲浪了很多但是从5.6到5.24没有找到任何有趣的东西.
是否可以从这么低的版本升级到高级版本.
Dra*_*oan 14
如果您转到CPAN,您选择的版本(在您的情况下为5.24.0 Perl 5.24.0),并在文档部分向下看,有很多perlXXXdelta
链接.这些文件描述了修订之间的更改,更重要的是它们详细说明了不兼容的更改.你也可以在网上找到这些.
版本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('')
不再将目录更改为home我建议你仔细阅读这些文件(考虑到你的巨大版本,它会让你忙碌!).如果您对代码库及其使用的perl功能有很好的了解,则尤其如此.这至少应该让您了解在迁移到更高版本时可能遇到的潜在陷阱.
我还要补充一点,鲍罗丁的答案值得一读,因为它详细介绍了处理升级的一个非常好的方法.我完全同意他的建议,尤其是单元测试 - 这是增加移民成功信心的可靠方法.如果您没有单元测试,那么这将是介绍它们的绝佳时机,并且能够证明为您的组织创建它们所花费的时间.
我认为对差异进行自我教育将是有用的,但是没有办法处理所有增量文件并检查所有来源是否存在差异
希望您的软件套件有单元测试.如果没有,那么现在了解它们为什么有用,并为您拥有的所有内容编写全面的测试
使你的版本控制系统叉子,并添加use strict
和use warnings 'all'
每一个源文件的顶部,如果他们不是已经存在.运行您的测试套件,直到所有内容仍然编译并在Perl v5.5下完美运行
在测试系统上安装Perl v5.24并调整源,直到它们通过每个测试
Perl 5的工作人员在保持向后兼容性方面表现出色,但几乎肯定会有一些伤亡
如果您有信心,请将新版本直播.会有更多的失败,对于每一个,你必须在测试套件中编写一个新的测试
我希望这会顺利
归档时间: |
|
查看次数: |
2172 次 |
最近记录: |