[英]Conditionally including a module in perl
我是perl的新手,剛遇到一個案例。
有人可以告訴為什么這會失敗,錯誤是Undefined subroutine&main :: color
$condition = 1;
use if ( $condition ), Term::ANSIColor;
print color('bold red');
print "hii";
print color('reset');
這傳遞了
use if ( 1 ), Term::ANSIColor;
print color('bold red');
print "hii";
print color('reset');
這是因為use
語句在編譯時執行,而您的賦值在運行時執行但尚未執行
你可以通過使用BEGIN
塊在編譯時進行分配來解決這個問題,就像這樣。 請注意,變量必須在塊外聲明,否則它將在塊的本地,並在結束之前消失
my $condition;
BEGIN {
$condition = 1;
}
use if $condition, 'Term::ANSIColor';
print color('bold red');
print "hii";
print color('reset');
另請注意,您應始終 use strict
並在每個Perl程序的頂部use warnings 'all'
。 如果你有這些,你需要引用模塊名稱,如上所示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.