5,輸入與輸出(perl語言筆記)
while (defined($line =
print "I saw $line";
}
簡寫
while (
print "I saw $_";
}
2, 從鑽石運算子輸入
鑽石運算子:<>
它能讓程式在處理呼叫引數時,提供類似於標準unix工具程式的用法。若時不提供任何呼叫引數,程式應該改成出來標準輸入流。但有個特
例;如果某個引數是連字元(-),那耶代表標準輸入。
鑽石運算子是整行輸入運算子的特例,例如:
while (defined($line = <>) {
chomp ($line);
print "It was $line that I saw!
";
}
既然是整行輸入運算子的一種特例,因此可以使用先前我們所看到的簡寫,將輸入讀取到預設的$_裡:
while (<>) {
chomp;
print "It was $_ that I saw;
";
}
3, 呼叫引數
嚴格來說,鑽石運算子並不好真的去檢查呼叫引數,它靠的是@ARGV陣列。這個陣列是由perl直譯器事先建立的特殊陣列,其內容就是呼叫
引數所組成的列表。
鑽石運算子如何絕對使用那些檔名?方法如下:它會查詢@ARGV,如果它找到的是空列表,就會改用標準輸入流;否則,就會使用@ARGV裡
的檔案列表。這表示程式開始執行之後,只要尚未使用鑽石運算子,就都可以對@ARGV動點手腳。舉例來說,我們可以不管使用者在命令列指定了
什麼,而是一律出來3個特定的檔案:
@ARGV = qw / larry moe curly /;
while (<>) {
chomp;
print "It was $_ that I saw in som stooge-like file!
";
}
4, 輸出至標準輸出
5, printf格式化輸出結果
printf運算子的引數包括“格式字串”以及“所要輸的資料列表”,格式字串是填空用的模板,代表你想要輸出的格式:
printf "Hello , %s; your password expires in %d days!
", $user,$days_to_die;
格式字串裡可以有多個所謂的“轉換”(conversion).每種轉換都會以百分符號(%)開頭,然後以某個字母結尾。
printf可用的轉換格式很多,所以我們在這裡會說明最常用的部分。
%g:要輸出恰當的數值形式,可以使用%g,它會依需自動選擇浮點數,整數甚至是指數形式。
%d:代表十進位制的整數,它會捨去小數點之後的整數。
%s:代表字串,所以它相當於將所提供的值當成字串進行替換,但是可以設定欄位寬度;如果寬度是負值,則向左對齊。
%f:會依需要四捨五入,甚至還可以指定小數點之後的輸出位數。
6,檔案控制程式碼
6個各具特殊用途的檔案控制程式碼名稱:STDIN,STDOUT,STDERR,DATA,ARGV和ARGVOUT
7,開啟檔案控制程式碼
perl所提供的3種檔案控制程式碼STDIN,STDOUT和STDERR,都是由perl程式的父程式自動開啟的檔案或裝置。當你需要其它的檔案控制程式碼時,請使用
open運算子告訴perl,要求作業系統為你的程式和外界開啟一道橋樑。例如:
open CONFIG, "dino";
open CONFIG, "
open LOG, ">>logfile";
第一個例子會開啟名為CONFIG的檔案控制程式碼,讓它聯絡到檔案dino。換句話說,它會打擊檔案dino.
第二個例子和第一個所作的事情完全相同,但是第二個例子的小於符合明示了“這個檔案是用來輸入資料的”,雖然那已經是預設的行為。
第三個例子會開啟檔案控制程式碼BEDROCK並輸出到新檔案fred。
第四個例子使用兩個大於號指明以新增的方式開啟檔案。
open另一種3個引數的寫法
open CONFIG, " open BEDROCK, ">", $file_name;
open LOG, ">>", &logfile_name();
其優點在於語法上可以很清楚的界定檔案的模式字串(第二個引數)與檔名本身(第三個引數)。
8,不良的檔案控制程式碼
my $success = open LOG, ">>logfile"; #獲取返回值
unless ($success){
#open失敗了
...
}
9,關閉檔案控制程式碼
close BEDROCK;
當重新開啟某個檔案控制程式碼時,perl會自動關閉原先的檔案控制程式碼。在程式結束時,perl也會自動關閉檔案控制程式碼。
10, 用die來處理嚴重錯誤
die函式會輸出你所指定的資訊,並且讓你的程式在非零的結束狀態下立刻終止。
if (! open LOG, ">>logfile") {
die "Cannot create logfile:$!";
}
如果open失敗,die會終止程式的執行,並且告訴我們“無法建立日誌檔案”。裡面的$!代表著給人看的系統抱怨資訊。
11,用warn送出警告資訊
die的功能是產生像perl的內建錯誤這樣的嚴重錯誤。相同的,warn函式的功能就是產生類似於perl的內建警告資訊的資訊。
12,使用檔案控制程式碼
當檔案控制程式碼以讀取模式開啟後,你可以輕易地從它讀取一行資料,就像從STDIN讀取標準輸入流一樣。因此,以“從unix系統讀取密碼檔案
”為例:
open PASSWD, "/etc/passwd"
or die "How did you get logged in?($!)";
while (
chomp;
...
}
在這個例子裡,die的資訊中用了一對括號圍住$!.它們只不過十括住輸出資訊的括號而已(有時候標點符號及時標點符號)。所謂的“整
行輸入運算子”是由兩部分組成的:一對角括號(真正的整行輸入運算子)以及裡面用來輸入的檔案控制程式碼。
13,改變預設的檔案控制程式碼
原則上,假如不為print提供檔案控制程式碼,它的輸出就會送到STDOUT.不過,你可以使用select運算子來改變預設的檔案控制程式碼。在下面這個範
例裡,我們會將輸出送到BEDROCK這個檔案控制程式碼;
select BEDROCK;
print "I hope Mr. Slate doesn't find out about this.
";
print "Wilma!
";
14, 重新開啟標準檔案控制程式碼
#送出錯誤資訊doa我自己的錯誤資訊日誌中
open STDERR, ">>/home/barney/.error_log"
or die "Can't open error log for append:$!";
重新開啟STDERR之後,任何從perl產生的錯誤資訊都會送到新的檔案裡。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245691/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Solidity語言學習筆記————24、輸入輸出引數Solid筆記
- JAVA筆記(12)——輸入和輸出Java筆記
- 《golang筆記》第三篇-輸入輸出Golang筆記
- 入門輸出Hello World!——C語言C語言
- 組合語言學習記錄--輸入輸出字串組合語言字串
- C++ 學習筆記之——輸入和輸出C++筆記
- C語言的本質(24)——C標準庫之輸入與輸出(下)C語言
- C語言輸入一個數輸出對應的值C語言
- 01_Numpy學習筆記(下):輸入和輸出筆記
- 韓語學習筆記(1)音標與輸入法筆記
- 6,雜湊(perl語言筆記)筆記
- Ubuntu下鍵盤輸入錯亂問題,輸入雙引號輸出的是@符號,輸入#號輸出的是未知語言的字元...Ubuntu符號字元
- 輸入和輸出基礎語法
- C輸入輸出與檔案
- linux中的輸入與輸出管理(重定向輸入,輸出,管道符)Linux
- 實驗1 C語言輸入輸出和簡單程式編寫C語言
- 輸入輸出
- C++筆記:輸入輸出、變數、變數加減乘除C++筆記變數
- C++ 中輸入輸出流及檔案流操作筆記C++筆記
- java_檔案輸入與輸出Java
- 資料儲存與輸出輸入
- 實驗1_C語言輸入輸出和簡單程式編寫C語言
- perl語言入門
- C語言輸出多位小數C語言
- C語言中輸入輸出重定,freopen()妙用。C語言
- python基本語法_輸入輸出詳解Python
- python:檔案的輸入與輸出Python
- Python資料的輸入與輸出Python
- 80x86組合語言:輸入數字,輸出對應月份的英文組合語言
- 【C++】輸入輸出C++
- Java 輸入輸出流Java
- 輸入輸出系統
- JAVA輸入輸出流Java
- 用C語言輸出蛇形矩陣C語言矩陣
- C語言清空輸入緩衝區C語言
- 11.程式程式設計基礎5:輸入輸出程式設計
- c語言:輸入任意10個正整數,按照升序排序輸出:(冒泡演算法)C語言排序演算法
- C++中的檔案輸入/輸出(3):掌握輸入/輸出流 (轉)C++