內容

名稱

deprecate - Perl pragma 針對核心模組包含的棄用

語法

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

說明

此 pragma 簡化了雙重生命週期模組的維護,這些模組在未來的 Perl 版本中將不再包含在 Perl 核心,但目前仍包含在其中。

此 pragma 的目的是透過發出警告來提醒使用者此類模組的狀態,鼓勵他們從 CPAN 安裝模組,如此一來,未來升級到省略此模組的 perl 時,他們的程式碼就不會中斷。

如果模組從核心程式庫目錄載入,則只會發出此警告,這允許在模組的 CPAN 版本中包含 use deprecate 行。由於當模組從非核心程式庫目錄執行時,實用指令會保持靜默,因此不需要將實用指令呼叫修補到模組的核心或 CPAN 版本中,也不需要將其從中移除。確切的相同程式碼可以運送給任一目的。

重要注意事項

請注意,當模組從 CPAN 安裝到核心程式庫目錄,而不是網站程式庫目錄時,使用者不會因為安裝了它而獲得任何保護。

同時,此實用指令無法偵測到此類模組何時從 CPAN 安裝到核心程式庫,因此它會不斷且徒勞地勸告使用者升級。

因此,可以從 CPAN 安裝到核心程式庫的模組必須確保在這樣做時不呼叫此實用指令。通常這表示安裝程式的確切邏輯必須反映在模組內部。例如

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

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

(以上範例顯示此情況最重要的案例:當目標是早於 Perl 5.12(其中核心程式庫目錄優先於網站程式庫目錄)的 Perl,且正在安裝的模組包含在該 Perl 版本的核心程式中。在這種情況下,只能透過安裝到核心程式庫才能從 CPAN 升級模組。)

EXPORT

預設為無。唯一的方法是 import,由 use deprecate; 呼叫。

另請參閱

use deprecate; 的第一個範例是 Switch

作者

Nicholas Clark 的原始版本

版權和授權

版權所有 (C) 2009、2011

此程式庫是免費軟體;您可以根據 Perl 本身條款(Perl 版本 5.10.0 或您可能擁有的任何後續 Perl 5 版本)重新散布或修改它。