Time of Update: 2018-12-06
2> /dev/null perl中調用外部命令或外部程式的時候,$a=`cmd`;偶爾會出現該程式會有錯誤輸出的情況。如果我們不希望這些錯誤輸出影響perl的輸出結果,或者不希望程式啟動並執行時候還時不時冒出一些錯誤資訊,那麼我們可以在調用命令的時候把錯誤輸出屏蔽掉。$a=`cmd 2>/dev/null`; 關於/dev/null檔案的詳細介紹,參見另一篇博文【linux】/dev/null與/dev/zero詳解
Time of Update: 2018-12-06
【例一】#!/usr/bin/perluse strict;@_=(a,b,c,d);print "@_\n"; 顯示輸出為:a b c d 【例二】print @_."\n"; #或print @_."";顯示輸出為@_的個數:4 【例三】print @_;顯示輸出為:abcd (不加空格) 【例四】@a=(a,b,c,d);@b=(e,f,g,h);則@a==@b為真,"@a"=="@b"為假 數組加上雙引號或單引號才表示一整個資料,不加則表示組數中元素的個數
Time of Update: 2018-12-06
perl 中的vars是perl中的一個pragma(先行編譯指示符),專門用來預定義全域變數,這些預定義後的全域變數在qw()列表中,在整個引用perl檔案中皆可使用,即便使用use strict也不會報錯:use strict ;$str = "hello world!\n" ;報錯資訊:Global symbol "$str" requires explicit package name at ~vars.pl line 3.Execution of ~vars.pl aborted
Time of Update: 2018-12-06
(一)單行注釋: 以#開頭的行都被perl認為是注釋。但是有一個例外,perl程式的第一行是#開頭的,他指定了perl程式的解譯器。例如:#print 1; (二)多行注釋:最常用的方法是使用 POD(Plain Old Documentations) 來進行多行注釋。方法如下: =podcodes to comment=cut注意:=pod =cut只能在行首以=開頭,以=cut結尾。 注意:=後面要緊接一個字元。=cut後面可以不用。
Time of Update: 2018-12-06
我們在linux常常用到一個程式需要加入參數,現在瞭解一下perl中的有關控制參數的函數.getopt.在linux有的參數有二種形式.一種是–help,另一種是-h.也就是-和–的分別.–表示完整參數.-表示簡化參數.在perl中也分這二種.Getopt::Std模組的功能: 初始化perl命令列中所接受的參數,簡化了命令列參數的解析。簡化參數例子:12345678910#!/usr/bin/perl -wuse strict;use Getopt::Std; use vars
Time of Update: 2018-12-06
不好意思,我是在 Gmail裡看到郵件了,然後直接回複了郵件,然後…… 才看到 “這是系統自動通知訊息,不要直接回複該郵件。” 呃…… 那就貼在這裡吧。 是這樣的,現在發出去的也就是我手頭的東西。這個就是春節前給同事們分享的部分。第二部分我正在準備,等做好了也會發在部落格園的。如果你著急的話我可以給你一個建議先,就是看 Perl 之前不妨看看 Lisp 先。 Perl有一個很牛的地方在於它超級的靈活,靈活到可以模仿,或者說可以為很多其他語言的想法來做實現,比如說 Lisp。其實我以前是很“排斥”
Time of Update: 2018-12-06
這是 ABC Perl Programming 之後的第二部分。名稱改成現在這樣是因為一本書,叫做 Higher Order Perl 。這本書的作者提到很多 Perl 的程式員在用 Perl 寫 C 的程式。這是一件很不幸的事情。當然了,所謂高手可以用任何方法做任何事情。但是,既然是在學習一個語言,至少要有三分樣吧。下面是 Higher-Order Perl 這本書前言的第一段。A well-known saying in the programming racket is that a
Time of Update: 2018-12-06
1. 有關function和subroutine。本書中的function指的是Perl built-in的函數,subroutine指的是user-defined 函數,本質上來說,function和subroutine是一回事。和Pascal不一樣,Pascal中的function和subroutine是 不一樣的,function有傳回值,而subroutine是沒有傳回值的。 2. Defining a Subroutine. 很簡單: Code: Select allsub
Time of Update: 2018-12-06
1. List and Array. 本書中所講的List是一種資料結構,Array是Perl中用來存放List的資料類型。大部分情況下,這兩個單詞可以互換,意思是一樣的。和C不一樣 的是,Perl的Array不用定義元素的類型,也就是說,Perl中的Array中的每個元素可以是Number,也可以是String,元素的類型沒 必要都一樣。和C相同的就是,對Array的訪問都是通過下標進行的,第一個元素的數組下標是0。 2. Perl中的Array用起來和C中的沒什麼區別: $fred[0]
Time of Update: 2018-12-06
Learning Perl 4ED Reading Notes Chapter2 Scalar Data 1. Numbers. 所有的資料(int,float)在Perl內部都是double類型。當然,有的時候Perl在內部也會使用integer來表示int,因為這樣可以 提高程式的運行速度,但是這些邏輯對於程式員來說都是invisible的,所以,我們完全可以不用關心。 2. Floating-Point and Integer Literals. For example: 1.25 25
Time of Update: 2018-12-06
文章目錄 1.變數的類型由它前面的符號確定2.沒必要提前聲明一個變數3.沒有類型轉換4.沒有字元類型5./不是整除6.再談數組8.沒有struct和union9.沒有懸空的else10.不一般的do11.沒有記憶體流失12.函數參數13.函數原型14.沒有main函數15.不一樣的左值16.隱含變數/參數參考資料 很多人並不是把Perl當做第一門程式設計語言來學習的,在學Perl之前往往已
Time of Update: 2018-12-06
原文發表在網易部落格 2010-11-04 21:22:33 3.1 列表列印#從STDIN中讀取每個列表值時,都會經過chomp的處理,因此每個列表元素都被去掉了結尾的分行符號 chomp(@lines=<STDIN>); print "print the list\n"; foreach $line (@lines){ print "$line\t"; } print "\n"; print "print the
Time of Update: 2018-12-06
原文發表在網易部落格 2010-11-04 21:18:43 開始學習perl了,得多做題啊.(讓我對perl感興趣的是小羊駝書,呃這個就是羊駝了,不過怎麼感覺跟網路上某個神獸很像啊.)2.1-2.3 計算圓半徑計算#!perl -w $PI=3.141592654; print "ENTER the semidiameter:"; $semidiameter = <STDIN> ; chomp($semidiameter); if
Time of Update: 2018-12-06
原文發表在網易部落格 2010-11-19 13:10:11 第1題根據輸入的人名列印其姓氏#!perl -w #getfamilyname use strict; my %nameTable=("fred"=>"flintstone","barney"=>"rubble","wilma"=>"flintstone"); print "input person name,and the program will print his familyname.\
Time of Update: 2018-12-06
原文發表於網易部落格 2010-11-16 13:39:42 learning perl第5章的練習題有點意料之外,雖然第5章講的是基本輸入輸出,但是實現習題時,還是花了我一段時間用來去前面幾個章節回顧了一下。呵呵,把數組知識也用進去了。第1題: 1: #!perl -w 2: #tac 3: use strict; 4: use 5.10.1; 5: my @result; 6: #@ARGV=qw(test1.txt test2.txt); 7:
Time of Update: 2018-12-06
.代表任何一個單字元,不匹配分行符號.*是量詞,表示前面內容出現0到多次.+也是量詞,表示前面內容出現1到多次.字元集簡寫 \d表示一個數字 \w表示一個單詞字元()數字,字母,底線) \s表示一個空白,可以匹配分行符號,定位字元,換頁符,斷行符號符,空格 \D表示一個非數字相當於[^\d] \W表示一個非單詞字元相當於[^\w] \S表示一個非空白字元相當於[^\s] perlRegex的修飾符 /i表示大小寫無關,例如/yes/i
Time of Update: 2018-12-06
Perl概覽Perl最早由Larry Wall開發,是一種“膠水”語言,例如將上一個程式的輸出做簡單處理,轉換為下一個程式的輸入。第一版Perl發佈於1987年12月18日,然後一直穩步升級,直到Perl 5. Perl 5是一個大升級,包含了一些對於Perl 4舊有文法的改進。該書寫作之時的Perl版本是5.10.1。Perl仍在不斷升級中,下一個大版本是Perl 6,Perl
Time of Update: 2018-12-06
第4章:列表與數組列表():空列表,當做條件判斷時為false兩個非空列表示例:("Hello ", "world", "\n") (123, 456, 789)同一列表中可以容納不同類型的元素Perl中的列表只有一維。(3, 8, 5, 15)、((3, 8), (5, 15))和(3, (8, 5), 15)都等於(3, 8, 5, 15)qw//可以用來聲明字串數組:qw/hello world good bye/等於('hello', 'world', 'good', 'bye').
Time of Update: 2018-12-06
第6章:子過程/函數聲明:subfunction_name;定義:subfunction_name {...}函數調用同C:example_subroutine();或example_subroutine;example_subroutine('Perl is', 'my favorite', $language);或example_subroutine 'Perl is', 'my favorite',
Time of Update: 2018-12-06
第11章:引用引用一律聲明為標量類型(即$開頭的命名變數),使用\運算子取引用對引用變數的修改等同於對引用指向實際資料的修改取變數引用:my $scalar_r = \$scalar;取列表的引用:my $array_r = \@array;取雜湊的引用:my $hash_r = \%hash; 通過引用解決列表無法嵌套的問題: my @array1 = (10, 20, 30, 40, 50);my @array2 = ( 1, 2, \@array1, 3,