目錄

名稱

autouse - 延後載入模組直到函式被使用

語法

use autouse 'Carp' => qw(carp croak);
carp "this carp was predeclared and autoused ";

說明

如果模組 Module 已載入,則宣告

use autouse 'Module' => qw(func1 func2($;$));

等同於

use Module qw(func1 func2);

如果 Module 定義 func2() 的原型為 ($;$),且 func1() 沒有原型。(至少如果 Module 使用 Exporterimport,否則會發生致命錯誤。)

如果模組 Module 尚未載入,則上述宣告會在目前套件中宣告函式 func1() 和 func2()。當呼叫這些函式時,它們會載入套件 Module(如果需要),並用正確的定義取代自己。

警告

使用 autouse 會將程式執行中的重要步驟從編譯時間移到執行時間。這可能會

為了(部分)緩解第二個問題,建議你像這樣撰寫指令碼

use Module;
use autouse Module => qw(carp($) croak(&$));
carp "this carp was predeclared and autoused ";

第一行確保你的引數規格中的錯誤會在早期發現。當你發布應用程式時,你應該註解掉第一行,因為它讓第二行變得無用。

作者

Ilya Zakharevich (ilya@math.ohio-state.edu)

另請參閱

perl(1)。