| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> perl >> 吸引C和Java程序員目光的Perl5.6
 

吸引C和Java程序員目光的Perl5.6

2008-05-19 06:25:57  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  Perl 解釋器

  初學者馬上就會發現 Perl 中似乎沒有任何編譯器。事實上,Perl 腳本大多是由 Perl 解釋器直接運行的,例如 UNIX 系統下的 "Perl"、DOS/Windows 下的 "perl.exe" 就是 Perl 解釋器。而在 MacOS 中則不需要這些解釋器。您可以試試看如何運行 Perl 腳本。首先在您的操作系統上啓動相應的 Perl 解釋器,或是在 MacOS 系統中直接運行。在大多數系統中,文件尾標志(UNIX 系統中爲 Control-D)用來表示用戶輸入結束。因此在 UNIX 系統中,下面這個腳本將能得到 "5+6" 的計算結果:

  從最簡單的 Perl 程序入手

  perl

  (Perl is waiting for user input here, because no script name is given)

  print 5+6

  You press Control-D here

  11

  可以看到 Perl 解釋器運行了這個只有一行的腳本程序,並輸入該表達式的計算結果 11。

  Perl 解釋器有許多選項。例如,-e 選項表示將命令行的輸入作爲腳本文件來執行,因此上面的腳本例子也可以這樣實現:在命令行輸入 perl -e'print 5+6'(注意,要用單引號將命令括起來)。而 -i 選項則類似于通過一個過濾器,允許在文件中不同的位置進行編輯。-n 和 -p 選項能讓程序員打開或關閉輸出。-w 選項與 C/C++ 中的 "-Wall" 編譯選項類似,都能夠對程序中潛在問題給出警告信息,但與 -Wall 不同的是,-w 功能在程序運行時也是被激活的。

  速度和 Benchmark

  人們常常拿 Perl 與 C/C++ 比較,並抱怨 Perl 運行速度不夠快。某些時候這的確是事實,但是並非永遠如此。我建議您在認爲 C 或 C++ 更快之前,使用 Benchmark 模塊試試看 (perldoc Benchmark)。此外,Perl 能很方便地與 C/C++ 代碼或庫連接,且某些 Perl 內置函數並不比 C 代碼慢,如排序或打印等。這裏再次提醒您在堅信 C/C++ 比較快之前,先使用一下 Benchmark 模塊。

  要記住,過早的優化往往是錯誤的根源。如果您在 Perl 中寫了一個原型,並用其他語言來重寫是沒有問題的。原型意味著能夠方便地開發。

  與 Java 相比而言,Perl 也能夠很好地工作。Perl 不象 Java 那樣擅長于線程,但它的 Tk GUI 界面工具箱卻比 Java 的 Swing GUI 庫要好。並且 Java 代碼總是能夠連接到 Perl 程序中,反之亦然。因此,有時您可以通過某種程度上的結合,使得程序在兩方面都做得很好。

  異常、編譯和文檔

  Perl 通過 CPAN 中的模塊或是其內置函數 eval() 來抛出異常。就好像在 C++ 或 Java 中通過 try/catch 代碼塊來處理異常一樣,eval 函數能處理某個代碼段或某個字符串操作的異常。

  事實上,Perl 程序在運行之前還是需要編譯的,只是和 C/C++/Java 的編譯方式不相同。在設計和效果上,它和 Java 的字節解釋過程很相似。關于編譯的更詳盡內容,可以參閱 "perldoc perlrun" 和 "perldoc perlcc" 文檔。

  可用 POD 格式來將文檔嵌入 Perl 程序。這種文檔嵌入方式比 Javadoc 格式(僅適合于 API 文檔)要通用,但比不上 C/C++/Java 的注釋。

  即使和 C、C++ 或 Java 比較起來,Perl 程序也不算是一種結構性強的語言。例如,BEGIN 語句塊會被首先執行,但它可以在程序中多次說明。定義、變量和函數體可以在程序的任意位置出現,Perl 所提供地強大功能可以最好地滿足這種隨意性。

  由于這種松散結構、嵌入的注釋、以及爲追求方便而導致的令人混淆的語句,使得書寫 Perl 程序更像是在寫一封英文信件。

  Perl 的容錯能力

  Perl 比 C/C++/Java 更能容忍一些模糊地寫法。例如可以用逗號來分隔語句或函數的參數:

  語句之間或函數參數之間的分隔符

  print 'Hello', ' ', 'there.', "\n";

  # print "Hello there\n"

  foreach (1..10)

  {

  my $i;

  $i = $_ * 2, print "$i\n";

  # print evens from 2 to 20

  }

  Perl 能盡最大可能地消除這些語句可能引起的歧義。當然,有些時候仍有無法解決的歧義(在這一點上,Perl 就象英語一樣)。

  Perl 中另一個容易引起歧義的地方在于:變量經常會被隱含使用。例如,"print" 語句缺省時會打印 $_ 變量的值。在其他一些含混的語句操作中,$_ 變量也是它們的缺省值,這就造成了一種混亂。例如:

  隱含使用變量

  $_ = "hello";

  s/hello/hi/;

  # $_ is "hi" now

  print;

  # prints "hi"

  這裏你可以看到,使用缺省變量能讓編程方便簡潔。也就是說,Perl 和英語類似,通過某種模糊性來簡化表達式。

  一項任務多種實現

  (There's more than one way to do it ,TMTOWTDI)

  所有的語言在解決問題時都有自己的方法。在 C 裏面,for() 循環是在一定範圍內重複的最好方法;在 Java 裏,靜態函數的調用是直接通過類而不是某個實例。

  但對于同一件事情,Perl 至少有兩種解決方法。TMTOWTDI 原則就是 Perl 的座右銘,各種處理上的差異在 Perl 編程中是深受鼓勵的。

  下面來看一個打印數組元素的例子。所有的表達方法都達到同一目的。

  打印數組元素

  print foreach @array;

  foreach (@array) {print};

  map {print} @array;

  print @array;

  要理解以上這些代碼的唯一途徑就是掌握所有 Perl 的語法。不要擔心哪種方法才是正確的,因爲實現同一目標總是有多種正確的方法。考慮這些不同的表達方式,您可以更深刻體會 Perl 的這個座右銘。

  另外,雖然一個任務的實現有多種方法,但這並不意味著所有方法都是正確的。通常情況下,更有可能寫出的是一些錯誤代碼。爲了保證代碼的正確性,最好盡量使用那些 Perl 內置的函數,而較少使用自己所編寫的函數,並且注意證明並記錄這些不那麽顯然的方法。

  正則表達式

  如果沒有初始化,正則表達式很有可能造成一片混亂。大多數人都相信正則表達式是由 Kalahari bushmen 發明的,它滲透到了大學的計算機科學編程的所有方面。

  Perl 的正則表達式是從 shell 腳本程序以及 awk/grep 工具中繼承而來的。但它的能力卻遠遠超出了原來的模型。

  基礎的正則表達式是非常容易書寫的,但難以讀懂。例如 "con\w+" 和 "contra"、"contrary" 匹配,但與 "pro" 或 "con" 都不匹配。然而在 Perl 5.6.0 中,正則表達式被固化了。Unicode 字符集、模式內任意代碼操作、flag toggles、條件表達式以及其他特征都被添加到正則表達式庫中。

  對于初學者的一個最好的建議就是:首先學習最基本的正則表達式(參閱 資料 部分,或 "perldoc perlre" 參考手冊),稍後才進一步學習那些複雜的高級特性。由于正則表達式必須全寫在一起,中間沒有辦法添加注釋,這就讓它們成爲所有 Perl 代碼中最難讀懂的一部分。因此建議大家書寫已成型的代碼。

  在 C/C++/Java 中正則表達式屬于外部的函數包,但 Perl 是目前最佳的正則表達式搜索和代換工具。在極少數情況下,它可能會比純 C 程序慢一些,但對于那些純粹面向正則表達式的問題,Perl 依然是您首選的工具。

  標量、數組和哈希散列

  和 C、C++、Java 中變量不同的是,Perl 的變量的類型是由其名字決定的,並且會自動初始化成相應類型。這一點讓 Perl 初學者覺得很不習慣,但它非常地直觀而易于理解。

  筆者推薦使用 "use strict"。通過它可以保證變量在使用之前聲明,從而避免打字錯誤等引起的程序錯誤。

  如果沒有做到這一點,則有可能遇到下面這樣的問題:

  一個常見的打字錯誤

  $i = 5;

  print $j;

  # print $i

  此例子中,程序員本來要打印變量 i 的值,結果卻敲成了 j。Perl 並不會覺得這段代碼有什麽問題,它會繼續執行打印語句,顯示 $j 的值即什麽都沒有。有些時候,Perl 的自動生成對象的確很有用,但以我的經驗來說,最好還是用 "use strict" 來關掉這一自動功能,從而避免上述問題。

  Perl 變量可以是標量 (scalars)、數組 (arrays)或哈希散列 (hashes,又叫做關聯數組)。(事實上,Perl 中有多種數據類型,但是程序員並不會直接面對它們。)此外也可以是引用,通常它們也是一種標量類型。其中標量名稱以 "$" 開頭,數組名以 "@" 開頭,而散列則以 "%" 開頭。

  標量是 Perl 中最簡單的數據類型。每個標量都有唯一的值,或者是字符串或者是引用。在必要的時候,字符串和數字可以互相轉化。這常讓初學者覺得欣喜異常。看一下這個例子:

  標量

  $i = "hi there";

  print 1+$i;

  # prints 1

  其中標量 $i 的值是字符串 "hi there",它對應的數值爲 0。因此 1 + "hi there" 的值爲 1,程序運行結果爲 1。

  不過這並不意味著 Perl 解釋器在對某個標量分別考慮其字符串類型和數字類型。事實上,在內存中只是一個含有某個值的標量。如果在數值運算的語句中(如加法),這個標量值就轉化成數值形式;如果在字符串操作語句中(例如打印),則以字符串形式執行。但無論以什麽形式運算,該標量變量實質上只有一個值。

  未定義的標量的值爲 "undef"。如果在 C/C++/Java 程序中,您可以將其他值與 null 比較,但在 Perl 中卻不能拿任何東西來與 "undef" 做比較。可用這樣

  
 
 
 
上一篇《ActivePerlPerlIS.dll遠程緩沖區溢出漏洞》
下一篇《功能豐富的Perl:輕松調試Perl的技巧》
 
 
 
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

河南夫妻在溫嶺網絡直播“造人”內容涉黃被刑事拘留

夫妻網絡直播“造人”爆紅   1月9日,溫嶺城北派出所接到南京警方的協查通告,他們近期打掉了一個涉黃直播APP平台。而根據掌握的線索,其中有一對涉案的夫妻主播...

如何防止牆紙老化?牆紙變舊變黃怎麽辦?

如何防止牆紙老化? (1)選擇透氣性好的牆紙 市場上牆紙的材質分無紡布的、木纖維的、PVC的、玻璃纖維基材的、布面的等,相對而言,PVC材質的牆紙最不透氣...

鮮肌之謎非日本生産VS鮮肌之謎假日貨是謠言

觀點一:破日本銷售量的“鮮肌之謎” 非日本生産 近一段時間,淘寶上架了一款名爲“鮮肌之謎的” 鲑魚卵巢美容液,號稱是最近日本的一款推出的全新護膚品,産品本身所...

中國最美古詩詞精選摘抄

系腰裙(北宋詞人 張先) 惜霜蟾照夜雲天,朦胧影、畫勾闌。人情縱似長情月,算一年年。又能得、幾番圓。 欲寄西江題葉字,流不到、五亭前。東池始有荷新綠,尚小如...

關于女人的經典語句

關于女人的經典語句1、【做一個獨立的女人】 思想獨立:有主見、有自己的人生觀、價值觀。有上進心,永遠不放棄自己的理想,做一份自己喜愛的事業,擁有快樂和成就...

未來我們可以和性愛機器人結婚嗎?

你想體驗機器人性愛嗎?你想和性愛機器人結婚嗎?如果你想,機器人有拒絕你的權利嗎? 近日,第二屆“國際人類-機器人性愛研討會”大會在倫敦金史密斯大學落下帷幕。而...

全球最變態的十個地方

10.土耳其地下洞穴城市 變態指數:★★☆☆☆ 這是土耳其卡帕多西亞的一個著名景點,傳說是當年基督教徒們爲了躲避戰爭而在此修建。裏面曾住著20000人,...

科學家稱,人類死亡後意識將在另外一個宇宙中繼續存活

據英國《每日快報》報道,一位科學家兼理論家Robert Lanza博士宣稱,世界上並不存在人類死亡,死亡的只是身體。他認爲我們的意識借助我們體內的能量生存,而且...

《屏裏狐》片頭曲《我愛狐狸精》歌詞是什麽?

《我愛狐狸精》 - 劉馨棋   (電視劇《屏裏狐》主題曲)   作詞:金十三&李旦   作曲:劉嘉   狐狸精 狐狸仙   千年修...

 
 
 
  Perl 解釋器   初學者馬上就會發現 Perl 中似乎沒有任何編譯器。事實上,Perl 腳本大多是由 Perl 解釋器直接運行的,例如 UNIX 系統下的 "Perl"、DOS/Windows 下的 "perl.exe" 就是 Perl 解釋器。而在 MacOS 中則不需要這些解釋器。您可以試試看如何運行 Perl 腳本。首先在您的操作系統上啓動相應的 Perl 解釋器,或是在 MacOS 系統中直接運行。在大多數系統中,文件尾標志(UNIX 系統中爲 Control-D)用來表示用戶輸入結束。因此在 UNIX 系統中,下面這個腳本將能得到 "5+6" 的計算結果:   從最簡單的 Perl 程序入手    perl   (Perl is waiting for user input here, because no script name is given)   print 5+6   You press Control-D here   11   可以看到 Perl 解釋器運行了這個只有一行的腳本程序,並輸入該表達式的計算結果 11。   Perl 解釋器有許多選項。例如,-e 選項表示將命令行的輸入作爲腳本文件來執行,因此上面的腳本例子也可以這樣實現:在命令行輸入 perl -e'print 5+6'(注意,要用單引號將命令括起來)。而 -i 選項則類似于通過一個過濾器,允許在文件中不同的位置進行編輯。-n 和 -p 選項能讓程序員打開或關閉輸出。-w 選項與 C/C++ 中的 "-Wall" 編譯選項類似,都能夠對程序中潛在問題給出警告信息,但與 -Wall 不同的是,-w 功能在程序運行時也是被激活的。   速度和 Benchmark   人們常常拿 Perl 與 C/C++ 比較,並抱怨 Perl 運行速度不夠快。某些時候這的確是事實,但是並非永遠如此。我建議您在認爲 C 或 C++ 更快之前,使用 Benchmark 模塊試試看 (perldoc Benchmark)。此外,Perl 能很方便地與 C/C++ 代碼或庫連接,且某些 Perl 內置函數並不比 C 代碼慢,如排序或打印等。這裏再次提醒您在堅信 C/C++ 比較快之前,先使用一下 Benchmark 模塊。   要記住,過早的優化往往是錯誤的根源。如果您在 Perl 中寫了一個原型,並用其他語言來重寫是沒有問題的。原型意味著能夠方便地開發。   與 Java 相比而言,Perl 也能夠很好地工作。Perl 不象 Java 那樣擅長于線程,但它的 Tk GUI 界面工具箱卻比 Java 的 Swing GUI 庫要好。並且 Java 代碼總是能夠連接到 Perl 程序中,反之亦然。因此,有時您可以通過某種程度上的結合,使得程序在兩方面都做得很好。   異常、編譯和文檔   Perl 通過 CPAN 中的模塊或是其內置函數 eval() 來抛出異常。就好像在 C++ 或 Java 中通過 try/catch 代碼塊來處理異常一樣,eval 函數能處理某個代碼段或某個字符串操作的異常。   事實上,Perl 程序在運行之前還是需要編譯的,只是和 C/C++/Java 的編譯方式不相同。在設計和效果上,它和 Java 的字節解釋過程很相似。關于編譯的更詳盡內容,可以參閱 "perldoc perlrun" 和 "perldoc perlcc" 文檔。   可用 POD 格式來將文檔嵌入 Perl 程序。這種文檔嵌入方式比 Javadoc 格式(僅適合于 API 文檔)要通用,但比不上 C/C++/Java 的注釋。   即使和 C、C++ 或 Java 比較起來,Perl 程序也不算是一種結構性強的語言。例如,BEGIN 語句塊會被首先執行,但它可以在程序中多次說明。定義、變量和函數體可以在程序的任意位置出現,Perl 所提供地強大功能可以最好地滿足這種隨意性。   由于這種松散結構、嵌入的注釋、以及爲追求方便而導致的令人混淆的語句,使得書寫 Perl 程序更像是在寫一封英文信件。   Perl 的容錯能力   Perl 比 C/C++/Java 更能容忍一些模糊地寫法。例如可以用逗號來分隔語句或函數的參數:   語句之間或函數參數之間的分隔符   print 'Hello', ' ', 'there.', "\n";   # print "Hello there\n"   foreach (1..10)   {   my $i;   $i = $_ * 2, print "$i\n";   # print evens from 2 to 20   }   Perl 能盡最大可能地消除這些語句可能引起的歧義。當然,有些時候仍有無法解決的歧義(在這一點上,Perl 就象英語一樣)。   Perl 中另一個容易引起歧義的地方在于:變量經常會被隱含使用。例如,"print" 語句缺省時會打印 $_ 變量的值。在其他一些含混的語句操作中,$_ 變量也是它們的缺省值,這就造成了一種混亂。例如:   隱含使用變量   $_ = "hello";   s/hello/hi/;   # $_ is "hi" now   print;   # prints "hi"   這裏你可以看到,使用缺省變量能讓編程方便簡潔。也就是說,Perl 和英語類似,通過某種模糊性來簡化表達式。   一項任務多種實現   (There's more than one way to do it ,TMTOWTDI)   所有的語言在解決問題時都有自己的方法。在 C 裏面,for() 循環是在一定範圍內重複的最好方法;在 Java 裏,靜態函數的調用是直接通過類而不是某個實例。   但對于同一件事情,Perl 至少有兩種解決方法。TMTOWTDI 原則就是 Perl 的座右銘,各種處理上的差異在 Perl 編程中是深受鼓勵的。   下面來看一個打印數組元素的例子。所有的表達方法都達到同一目的。   打印數組元素   print foreach @array;   foreach (@array) {print};   map {print} @array;   print @array;   要理解以上這些代碼的唯一途徑就是掌握所有 Perl 的語法。不要擔心哪種方法才是正確的,因爲實現同一目標總是有多種正確的方法。考慮這些不同的表達方式,您可以更深刻體會 Perl 的這個座右銘。   另外,雖然一個任務的實現有多種方法,但這並不意味著所有方法都是正確的。通常情況下,更有可能寫出的是一些錯誤代碼。爲了保證代碼的正確性,最好盡量使用那些 Perl 內置的函數,而較少使用自己所編寫的函數,並且注意證明並記錄這些不那麽顯然的方法。   正則表達式   如果沒有初始化,正則表達式很有可能造成一片混亂。大多數人都相信正則表達式是由 Kalahari bushmen 發明的,它滲透到了大學的計算機科學編程的所有方面。   Perl 的正則表達式是從 shell 腳本程序以及 awk/grep 工具中繼承而來的。但它的能力卻遠遠超出了原來的模型。   基礎的正則表達式是非常容易書寫的,但難以讀懂。例如 "con\w+" 和 "contra"、"contrary" 匹配,但與 "pro" 或 "con" 都不匹配。然而在 Perl 5.6.0 中,正則表達式被固化了。Unicode 字符集、模式內任意代碼操作、flag toggles、條件表達式以及其他特征都被添加到正則表達式庫中。   對于初學者的一個最好的建議就是:首先學習最基本的正則表達式(參閱 資料 部分,或 "perldoc perlre" 參考手冊),稍後才進一步學習那些複雜的高級特性。由于正則表達式必須全寫在一起,中間沒有辦法添加注釋,這就讓它們成爲所有 Perl 代碼中最難讀懂的一部分。因此建議大家書寫已成型的代碼。   在 C/C++/Java 中正則表達式屬于外部的函數包,但 Perl 是目前最佳的正則表達式搜索和代換工具。在極少數情況下,它可能會比純 C 程序慢一些,但對于那些純粹面向正則表達式的問題,Perl 依然是您首選的工具。   標量、數組和哈希散列   和 C、C++、Java 中變量不同的是,Perl 的變量的類型是由其名字決定的,並且會自動初始化成相應類型。這一點讓 Perl 初學者覺得很不習慣,但它非常地直觀而易于理解。   筆者推薦使用 "use strict"。通過它可以保證變量在使用之前聲明,從而避免打字錯誤等引起的程序錯誤。   如果沒有做到這一點,則有可能遇到下面這樣的問題:   一個常見的打字錯誤   $i = 5;   print $j;   # print $i   此例子中,程序員本來要打印變量 i 的值,結果卻敲成了 j。Perl 並不會覺得這段代碼有什麽問題,它會繼續執行打印語句,顯示 $j 的值即什麽都沒有。有些時候,Perl 的自動生成對象的確很有用,但以我的經驗來說,最好還是用 "use strict" 來關掉這一自動功能,從而避免上述問題。   Perl 變量可以是標量 (scalars)、數組 (arrays)或哈希散列 (hashes,又叫做關聯數組)。(事實上,Perl 中有多種數據類型,但是程序員並不會直接面對它們。)此外也可以是引用,通常它們也是一種標量類型。其中標量名稱以 "$" 開頭,數組名以 "@" 開頭,而散列則以 "%" 開頭。   標量是 Perl 中最簡單的數據類型。每個標量都有唯一的值,或者是字符串或者是引用。在必要的時候,字符串和數字可以互相轉化。這常讓初學者覺得欣喜異常。看一下這個例子:   標量   $i = "hi there";   print 1+$i;   # prints 1   其中標量 $i 的值是字符串 "hi there",它對應的數值爲 0。因此 1 + "hi there" 的值爲 1,程序運行結果爲 1。   不過這並不意味著 Perl 解釋器在對某個標量分別考慮其字符串類型和數字類型。事實上,在內存中只是一個含有某個值的標量。如果在數值運算的語句中(如加法),這個標量值就轉化成數值形式;如果在字符串操作語句中(例如打印),則以字符串形式執行。但無論以什麽形式運算,該標量變量實質上只有一個值。   未定義的標量的值爲 "undef"。如果在 C/C++/Java 程序中,您可以將其他值與 null 比較,但在 Perl 中卻不能拿任何東西來與 "undef" 做比較。可用這樣   
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
美得讓人陶醉
杭州美女模特米萊
清純迷人唐小妹
氣質一流的上海女生
夢醉克孜加爾湖畔
珠江公園(二)
魔域桃源
南嶺森林公園親水谷
 
>>返回首頁<<
 
 
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有