perl的5個(gè)常見錯(cuò)誤

字號(hào):


    最近在用perl+mdbm+spread做東西。
    php是用了很久了,python和ruby與用過,經(jīng)典腳本語(yǔ)言就perl沒摸過,現(xiàn)在在像小學(xué)生一樣抱著教科書啃。
    發(fā)現(xiàn)perl果然有難度多了。別的東西沒讓我這么頻繁地犯錯(cuò)誤。
    1.第一個(gè)常見的錯(cuò)誤是:向文件輸出內(nèi)容。標(biāo)準(zhǔn)語(yǔ)法是:
    print STDERR "this is an apple.";
    我一般都會(huì)寫成
    print STDERR,"this is an apple.";
    總是多打一個(gè)逗號(hào)。老實(shí)說,一般我很少重復(fù)地犯錯(cuò)誤,但是這個(gè)地方我就是記不住。
    2.第二個(gè)常見錯(cuò)誤是:經(jīng)常漏寫Hash引用的箭頭。
    本來(lái)應(yīng)該寫成
    print $hash->{$key};
    我常常寫成
    print $hash{$key};
    3.第三個(gè)常見錯(cuò)誤是:字符串比較:
    用php時(shí)間長(zhǎng)了,老是用兩個(gè)等號(hào)來(lái)比較字符串。這是錯(cuò)的。正確寫法是
    if($var eq "hello") {
    print "world";
    }
    我經(jīng)常寫成:
    if($var=="hello") {
    print "world";
    }
    這會(huì)導(dǎo)致邏輯錯(cuò)誤,很難覺查。
    4.第四個(gè)常見錯(cuò)誤:
    if語(yǔ)句不帶括號(hào)(都是php帶壞的)
    正確的寫法是:
    if($var)
    {
    print "yes";
    }
    我經(jīng)常寫成
    if($var)
    print "yes";
    5.還有一個(gè)錯(cuò)誤,不是從php中帶過來(lái)的,一般人估計(jì)不會(huì)犯:漏寫分號(hào)。