套件 NAMESPACE
套件 NAMESPACE VERSION
套件 NAMESPACE BLOCK
套件 NAMESPACE VERSION BLOCK

宣告 BLOCK 或編譯單元的其餘部分屬於指定的命名空間。套件宣告的範圍可能是提供的程式碼 BLOCK,或在沒有 BLOCK 的情況下,從宣告本身到目前範圍的結尾(封閉的區塊、檔案或 eval)。也就是說,沒有 BLOCK 的形式會作用到目前範圍的結尾,就像 mystateour 運算子。此範圍內所有不合格的動態識別碼都將屬於指定的命名空間,除非被另一個 package 宣告覆寫,或它們是會限定到 main:: 的特殊識別碼之一,例如 STDOUTARGVENV 和標點符號變數。

套件宣告只會影響動態變數,包括您已使用 local 的變數,但會影響使用 mystateour 建立的詞彙範圍變數。通常,它會是 requireuse 所包含檔案中的第一個宣告。您可以在多個地方切換至套件,因為這只會決定編譯器在該區塊的其餘部分使用的預設符號表。您可以透過在識別碼前面加上套件名稱和兩個冒號來參照當前套件以外的其他套件中的識別碼,例如 $SomePack::varThatPack::INPUT_HANDLE。如果省略套件名稱,則會假設為 main 套件。也就是說,$::sail 等於 $main::sail(以及 $main'sail,這在舊程式碼中仍然可見,大多來自 Perl 4)。

如果提供了 VERSION,package 會將給定命名空間中的 $VERSION 變數設定為具有所提供的 VERSION 的 版本 物件。VERSION 必須是 版本 模組所定義的「嚴格」樣式版本號碼:正十進位數字(整數或小數分數),沒有指數運算,否則就是帶有前導「v」字元且至少有三個組件的點分十進位 v 字串。您應該每個套件只設定 $VERSION 一次。

請參閱 perlmod 中的「套件」 以取得有關套件、模組和類別的更多資訊。請參閱 perlsub 以取得其他範圍問題。