標籤:
Perl中讀取標準輸入:<STDIN>
foreach (<STDIN>) { print "I saw $_";}
鑽石操作符<>:它的參數來源於@ARGV數組。
先檢查@ARGV數組,如果為空白,則從標準輸入資料流輸入。@ARGV的值可以來自命令列,也可以自己賦值。
./program fred barney betty #@ARGV的值便是命令列後的三個檔案。
while (<>) { chomp; print "It‘s was $_ that I saw";}
Perl中的標準輸出:print。輸出多項時,可以通過加","來隔開,各自用雙引號括起。
用print輸出數組時。print @array; #會輸出@array中所有元素,以空格分隔。相當於數組插入。
用printf格式化輸出。%g/%d/%s/ printf “The items are:\n”.("%10s\n"[email protected]), @items; #定義多個%s
注意print加括弧時是顯式的函數調用,是列表上下文,返回列表。不加括弧時,返回標量0/1。
print <>; 將輸入直接輸出。
檔案控制代碼:代表Perl進程與I/O之間聯絡的名稱,而不是說一個檔案的名稱,
Shell中的檔案I/O流: ./program <dino >wilma #表示從檔案dino輸入,輸出到wilma,Perl程式仍然是輸入STDIN,
輸出到STDOUT。剩下的部分由Shell來處理。
netstat | ./your_program 2>/tmp/my_errors #對STDERR重新導向。
裸字(bareward)檔案控制代碼: open CONFIG, ‘< dino‘; #開啟dino檔案作為輸入,檔案控制代碼的操作符叫CONFIG。
Perl中預設開啟的檔案控制代碼是輸入。‘>‘輸出,‘>>‘追加在某個已經存在的檔案後。注意將檔案用單引號括起來。
close CONFIG; #關閉檔案控制代碼
使用標量變數的檔案控制代碼:一般先用詞法變數my來定義。
my $rocks_fh;
open $rocks_fh, ‘>‘, ‘file.txt‘; #一般用尾碼_fh來表示檔案控制代碼。
在Perl中可以使用die和warning來,分別結束當前Perl進程,和輸出warning到STDERR。
die "Cannot create LOG flie:$!" #$!表示進行系統調用時的傳回值。Perl預設會將Perl檔案名稱和行號加在log中。
die "Cannot create LOG flie:$! \n" #加了分行符號後,Perl不會再加入檔案名稱和行號。
使用檔案控制代碼來輸入時:直接在<>括弧中加入控制代碼名。
while (<PASSWD>) {......}
使用檔案控制代碼來輸出時:在print/printf 後加入檔案控制代碼名。但是不要加逗號,否則會當做需要輸出字串的字數的一部分。或者直接用
花括弧{}將檔案控制代碼的名字括起來。
print {LOG} "HAHA";
改變預設的檔案控制代碼,使用select關鍵字。 select LOG; select STDERR;
從Perl5.10開始,可以使用say來代替print。say會自動在輸出的字元結束添加分行符號。
Perl中的駱駝精神(三)