|| 小訣竅

2013-08-26 16:07

小訣竅

 

接下來我們來點飯後甜點,也就是 || 算符。其實不只 || 算符,其他的邏輯算符也可以拿來作流程控制的小小螺絲釘。不過首先我自己偏愛使用 || (也是使用機會比較高的),而且我們只打算來個甜點,這時候顯然不適合大餐了。
我們有時候會希望某些變數可以有預設值,例如副常式的參數,或是希望使用者輸入的變數等等。所以你當然可以這樣寫:

 


sub input {
    my $key = shift;
    $key = "預設值" unless ($key);
    print "$key\n";
}


這個副常式甚麼也沒作,就只拿了使用者傳來的參數,然後印出來。可是我們還可以讓他更簡單一些,我們把他改成這樣:
 


sub input {
    my $key = shift || "預設值";
    print "$key\n";
}


這時候,|| 算符被我們拿來當一個判斷的工具。我們先確定使用者有沒有傳入參數,也就是平常我們所使用的shift,如果@_中是空陣列,那麼 $key = shift 就會得到偽值,這時候 || 就會啟動,讓我們的預設值產生效果。因此我們就得到 $key = "預設值"。
另外,|| 還常常被用來進行意外處理。因為我們必須知道,如果某個運算式失敗,那麼我們就可以讓程式傳回錯誤訊息。就像這樣:

 


output() || die "沒有回傳值";

sub output {
    return 0;
}


我們在程式裡面呼叫 output 這個副常式,不過因為回傳值是 0,於是 || 也發生效用,就讓程式中斷在這裡,並且印出錯誤訊息。