perl學習筆記四——輸入與輸出

來源:互聯網
上載者:User

標籤:

讀取標準輸入

用<STDIN>進行標準輸入:chomp($line=<STDIN>);

如果讀到檔案尾,行輸入操作符就會返回undef。便可利用這一性質跳出迴圈。

while(defined ($line=<STDIN>)){

  print "I saw $line";

}

簡寫為:

while(<STDIN>){

  print "I saw $_ .";

}

注意:這個簡寫只在最早的寫法中才能正常運行,如果將行輸入操作符放在其他的任何地方(特別是自成一行),他並不會讀取行輸入並自動儲存入預設變數$_。唯獨在while迴圈中條件運算式裡只有行輸入操作符的前提下這個簡寫才起作用。

 同樣foreach也有這樣的用法:

foreach (<STDIN>){

  print "I saw $_";

}

不同之處在於:while每讀入一行就處理一行,foreach需要一次性讀完再處理。

#!/usr/bin/perluse strict;use warnings;while (<STDIN>) {    print "I saw $_ \n";}foreach  (<STDIN>) {    print "I saw $_ \n";}

來自鑽石操作符(<>)的輸入

可以用鑽石操作符編寫類似cat、sed、awk、sort、grep、lpr等工具程式。

程式調用參數:$./my_program fred barney betty

如果比提供任何調用參數的話,程式會從標準輸入資料流中採集資料。此外:如果用連字號(-)當作參數,則表示要從標準輸入中讀入資料。所以假如調用參數fred - betty,那麼程式應該先處理檔案fred,然後處理標準輸入資料流提供的的資料,最後是betty。

 

鑽石操作符就是行輸入操作符的特例。不過他並不是從鍵盤中讀取輸入,而是從使用者指定的位置讀取:

while(defined($line =<>)){

    chomp($line);

    print "It was $line that I saw!\n";

}

如果現在輸入的是調用參數是fred、barney、betty那麼,輸出結果就會是"It was [從檔案中讀取的一行內容] line  that I saw!"等,直到遇到檔案尾結束。注意:<>在讀完一個檔案後會接著讀新的檔案,然後在逐行輸出內容。應為使用鑽石操作符時已經報這些檔案合并成一個很大的檔案一樣,鑽石操作符只有碰到所有的輸入的結尾時才會返回undef然後跳出while迴圈。

上面代碼簡寫:

while (<>){

    chomp;

    print "It was $_ that I saw!\n";

}

注意:鑽石操作符一般會處理所有的輸入,所以在程式中如果看到多個鑽石操作符那麼通常是錯誤的。

 

#!/usr/bin/perlwhile (<>){    chomp;    print "$_ \n";}
//注意代碼中下面執行指令中添加了-,並從grep的輸出管道中讀入

 

perl學習筆記四——輸入與輸出

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.