目前,在調試過程中,我傾向於插入我可以定義一個可以像內置的任何地方一樣調用的子例程嗎?
carp Dumper \@foo, \%bar;
語句到我的代碼,並定期運行到該Carp
和Data::Dumper
沒有在當前的包進口的問題。所以,現在
sub main::bla {
use Carp; use Data::Dumper;
carp Dumper @_;
}
我可以做
main::bla \@foo, \%bar;
無處不在,但main::
讓我很煩:爲了避免這個問題,我定義在中央文件中的以下子那總是包括在內。是否有像全局包一樣,在任何包中自動導入(就像內置插件實際上是隨處導入的)?
我想說明'use'是一個編譯時指令;換句話說,如果在總是包含的某個模塊中使用'use',則這些模塊也將始終包含在內。在某些可能不會被調用的代碼中(例如,在一個條件的假分支中)放置一個'use'並不妨礙它被處理。 – raina77ow 2012-08-15 13:03:54
@ raina77ow:不錯的主意。我試圖劫持常用模塊的'import'方法來在調用包中安裝'bla'。但是通用模塊默認沒有'import',所以一旦其他模塊具有'require'd或'use'd,其他模塊不需要'再次'使用它,因爲它們必須調用通用模塊的方法明確無論如何(即'Common :: foo()'而不是'foo()')。 – 2012-08-15 13:21:30
'PERL5OPT'環境變量可用於始終加載特定模塊:'-MCarp' – toolic 2012-08-15 13:52:20