[精讚] [會員登入]
92

關於Perl,你得知道這幾點

Perl 有不少奇異的地方,值得看一看

此文完整連結 http://n.sfs.tw/13011

複製連結 關於Perl,你得知道這幾點 @新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-01-18 11:11:10 最後編修
2019-01-07 13:25:44 By 張○○
 

Perl 有不少奇異的地方

沒有 switch 元件

  Perl 沒有switch,perl 如果要達到 switch 的功能,就必須裝一些額外的模組。

  如果不想裝,就得用一堆 if-elsif- ....-elsif-else 來取代。這裡的 elsif 常是初學者會打錯的地方,因為他拚作 elsif [正] 而不是 elseif [誤]。

 

正規表達式不太一樣

  Perl 的正規表達式Regular Express(regex) 和別人不太一樣,有些是屬於PERL獨有的,這也是perl的強項:對文件檔案和字串的處理能力。

PERL的 regex 非常精采,此外, perl 多了一個 =~ 的運算符,這是別的語言沒有的東西,也是很多初學者的障礙。

 

迴圈中的元素是動態的

容許foreach 迴圈中動態加值進去,非常特別,例如以PHP作對比範例。

[PHP]

$arr= array("black","gray","white");
$ii=0;
foreach($arr as $item){
    if($ii==0){ array_push($arr,"yellow", "pink", "red"); }
    print $item;  
    $ii++;
}
print_r( $arr);

第4行 迴圈中,在一開始時在陣列尾端加入項目"yellow", "pink", "red"

第5行 分別印出black gray white,但在迴圈中加入的"yellow", "pink", "red" 沒有印出

第8行 確認陣列的確是完整個6個項目

Array
(
    [0] => black
    [1] => gray
    [2] => white
    [3] => yellow
    [4] => pink
    [5] => red
)

 

同樣的例子寫在 Perl 就不一樣,來看看:

[PERL]

my @arr = qw(black gray white);
my $ii=0;
foreach(@arr){
    push(@arr,("yellow", "pink", "red")) if $ii==0;
    print $_."\n";
    $ii++;
}

雖然項目"yellow", "pink", "red"是在迴圈中被加入,還是會當成是迴圈陣列的一部分,第5行印出完整個六個項目:

black
gray
white
yellow
pink
red

在迴圈中被加入的項目,並且影響迴圈項目個數

換句話說,這樣子寫程式會變成無窮迴圈:

my @arr = qw(black gray white);
foreach(@arr){
    push(@arr,"green");
    print $_."\n";
}

 

特殊字元和省略符號相當多

perl 的特殊字元大概有2 30個,常是初學者的障礙,就算是老手,有時要看這些特殊字元和省略符一堆的程式碼,也會看得一個頭兩個大;以我的經驗,大概自己寫的過一陣子不用太久,就會忘記自己寫什麼鬼了。

 

沒有真和假的BOOLEAN值

你不能設定變數為true或false,例如你不能設定 $a=true;

 

迴圈中沒有 break 的指令

取而代之是 last。舊版本的 last 並不是像break 立刻跳出迴圈,而是把迴圈的指標設為最後。

新版本的perl改善這個問題。

 

大括號完全不能省

一行運算式還是要大括號,頗煩的~~

例如 if(...){ 一行內容; } 這個大括號不能省。

 

沒有 /*..... */ 註解

可以包圍一個範圍的註解不存在,要註解一段的話,只能一行一行加 ''#'

 


編修原文 2009-11-19 02:38:02

你可能感興趣的文章

[PERL] 09-迴圈 perl的迴圈

[PERL] 08-陣列 #2 --操作 更多perl陣列的操作,如拆開、黏合、取出、加入等等

[PERL] 03-條件式判斷 perl的條件式判斷

[PERL] 取得字串長度 使用length來取得字串長度

Perl 計算經過的時間 Perl 計算程式執行經過的時間

[PERL] 05-運算子 #1 PERL的運算子介紹,總共有21種

Perl 的特殊變數:$_、$&、$! 介紹perl的特殊變數 $_ 、 $&、$!

關於Perl,你得知道這幾點 Perl 有不少奇異的地方,值得看一看

PERL 正規表達式會用到的符號 PERL在比對時常常會用到符號整理

[PERL] 04-基本比對 perl的正規表達示基本比對

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[MAC] 截取螢幕畫面的方法 截取螢幕畫面的方法,在MAC中叫作螢幕快照,英文是screenshot

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

設計的工作絕不接受比價 拿買陽春麵的價格想買牛肉麵,寧願倒掉也不賣

在Centos7 下安裝 Wildfly10 wildfly以前叫JBoss,2014.11.20改名叫Wildfly,起始版本是Wildfly8,現在已經出到Wil

兩次使用InnoDB的慘痛經驗 Mysql 的Innodb引擎雖然好用,但是我得說說我兩次的慘痛經驗,這讓我考慮以後可能不會再使用innodb了