簡體   English   中英

有條件地在perl中包含一個模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM