這章講FILE
檔案我想最care 的不外乎
開檔
open(FILEHANDLE,"filename") or die "Error open file $!";
例: open(MY,"data" ) or die ....
開檔案data ,用HANDLE MY,如果沒成功,die function 啟動
FILEHANDLE 可以隨自己高興取。
開檔又分成讀,寫。
上面的開檔沒講要讀或寫,default 就是寫
要寫的話,打
open(FILEHANDLE,<"filename") ,在filename 前面打個< 就OK 了。
如果希望寫在檔案尾端,也就append 的話,就打
open(FILEHANDLE,<<"filename")
那要從檔案讀資料,就跟從stdin 很像
$d = <MY> # 用上面的HANDLE MY
那要寫檔案利用print
print FILEHANDLE "hi";
一次也可以讀或寫大量的資料利用read 和write
read(FILEHANDLE,$buf,50);# 從file 中讀50個 bytes ,放在變數$buf
write 比較奇怪一點
要先寫一個format # 真的叫format ,有定義的東西
例如:
format FILEHANDLE =
Hi @<<<<<
$name
Hi @|||||
$name
Hi @>>>>>
$name
.
結尾用.
@<<<<< 是指它下面那行的變數,要放的地方
< left justified ,< 有幾個就空幾個出來。
> right justified
| center
然後在用
write FILEHANDLE;
其實上面在實際操作上,蠻麻煩的,因為還要先決定變數需要的空格,如果空格不夠,變數的內容會被truncate。
可以用@* 就搞定了。
針對數字的安排可以用
@####.## ,# 表示一個digit
上面的例子是書上寫的,不過我實際測試卻沒印出東西。I don't know why.
我們也可以替檔案改名
rename(old_file,new_file)
如果新的檔案本來就存在,那會被蓋掉。
刪除檔案用,unlink
unlink("A.dat","B.dat");
刪除A.dat ,及B.dat
我們也可以這樣
unlink(<*.doc>);
刪除所有的doc 檔。
最後是file test
-e ,判斷檔案存在
-f ,regular file
-w ,directory
-x ,executable
-r ,readable
-w ,writable
-T,text file
-B,binary file
-s ,Length of file in bytes
例如if(-e "A.dat" && -f "A.dat"){....}
但不能if(-ef "A.dat")
這章結束,收工。
留言列表