内容

名称

deprecate - Perl pragma 用于弃用核心模块的包含

语法

use deprecate;  # warn about future absence if loaded from core

描述

此 pragma 简化了双重生命模块的维护,这些模块在未来的 Perl 版本中将不再包含在 Perl 核心,但目前仍包含在其中。

此 pragma 的目的是通过发出警告来提醒用户此类模块的状态,鼓励他们从 CPAN 安装模块,以便将来升级到省略该模块的 perl 不会破坏其代码。

仅当从核心库目录加载模块时才会发出此警告,这允许将 use deprecate 行包含在 CPAN 版本的模块中。由于当从非核心库目录运行模块时此 pragma 保持静默,因此无需将 pragma 调用修补到核心或 CPAN 版本的模块中或从中修补出来。完全相同的代码可以用于任一目的。

重要警告

请注意,当模块从 CPAN 安装到核心库目录而不是站点库目录时,用户不会获得安装保护。

同时,此 pragma 无法检测到此类模块何时从 CPAN 安装到核心库,因此它会无休止且无用地敦促用户升级。

因此,可以从 CPAN 安装到核心库的模块必须确保在执行此操作后不调用此编译指示。通常,这意味着必须在模块内部镜像安装程序的确切逻辑。例如:

# Makefile.PL
WriteMakefile(
    # ...
    INSTALLDIRS => ( "$]" >= 5.011 ? 'site' : 'perl' ),
);

# lib/Foo/Bar.pm
use if "$]" >= 5.011, 'deprecate';

(以上示例显示了这种情况最重要的案例:当目标是低于 5.12 的 Perl(其中核心库目录优先于站点库目录)并且正在安装的模块包含在该 Perl 版本的核心库中时。在这种情况下,只能通过安装到核心库来从 CPAN 升级模块。)

EXPORT

默认情况下没有。唯一的方法是 import,由 use deprecate; 调用。

另请参阅

第一个 use deprecate; 示例是 Switch

作者

Nicholas Clark 的原始版本

版权和许可

版权所有 (C) 2009、2011

此库是免费软件;你可以根据与 Perl 本身相同的条款重新分发和/或修改它,即 Perl 5.10.0 版本或你可能拥有的任何更高版本的 Perl 5。