例如:
unless ($fred =~ /^([A-Z_]\w*$/i) { print "The value of \$fred doesn't look like a Perl identifier name. \n"; }
使用unless意味著,要么條件為真,要么執(zhí)行某塊代碼。這就好像使用if控制結(jié)構(gòu)來(lái)判斷相反的條件。另一種說(shuō)法是它類似于獨(dú)立的else子句。也就是說(shuō),當(dāng)看不懂某個(gè)unless語(yǔ)句時(shí),可以用如下的if語(yǔ)句來(lái)代替:
if ($fred =~ /^([A-Z_]\w*$/i) { //什么都不做 } else { print "The value of \$fred doesn't look like a Perl identifier name. \n"; }
如此操作與運(yùn)行效率高低無(wú)關(guān),兩種寫法應(yīng)該會(huì)被統(tǒng)譯成相同的內(nèi)部字節(jié)碼。另外一個(gè)改寫的方法,就是以取反操作符!來(lái)否定條件:
if ( ! ($fred =~ /^([A-Z_]\w*$/i) ) { print "The value of \$fred doesn't look like a Perl identifier name. \n"; }
通常應(yīng)該選擇最容易理解的方法來(lái)寫代碼,因?yàn)檫@通常對(duì)于維護(hù)程序員來(lái)說(shuō)也是最容易理解的。如果用if來(lái)表達(dá)最合適,那么就這么寫也行。但是更多的情況下使用unless能使你的表達(dá)更加自然。
unless附帶的else子句
其實(shí)哪怕是在unless結(jié)構(gòu)中也可以使用else語(yǔ)句,雖然支持這樣的語(yǔ)法,但是可能會(huì)導(dǎo)致困惑:
#!/usr/bin/perl -w unless ($mon =~ /^Feb/) { print "This month has at least thirty days.\n"; } lese { print "Do you see what's going on here?\n"; } #如果用if語(yǔ)句我們可以寫成這樣: if ($mon =~ /^Feb/) { print "Do you see what's going on here?\n"; } else { print "This month has at least thirty days.\n"; }
|