六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Perl教學 第11篇 文件系統之一

[摘要]本章所講的函數多數使用了UNIX操作系統的特性,在非UNIX系統中,一些函數可能沒有定義或有不同的工作方式,使用時請查看Perl聯機文檔。一、文件輸入/輸出函數本節講述從文件中讀取信息和向文件寫入信息的內置庫函數。1、基本I/O函數一些I/O函數在前面的章節中已有講述,如·open:允許...
    本章所講的函數多數使用了UNIX操作系統的特性,在非UNIX系統中,一些函數可能沒有定義或有不同的工作方式,使用時請查看Perl聯機文檔。
一、文件輸入/輸出函數
本節講述從文件中讀取信息和向文件寫入信息的內置庫函數。
1、基本I/O函數
一些I/O函數在前面的章節中已有講述,如

·open:允許程序訪問文件
·close:終止文件訪問
·print:文件寫入字符串
·write:向文件寫入格式化信息
·printf:格式化字符串并輸出到文件
這里簡單回顧一下,再講一些前面未提到的函數。
1)open函數
open函數將文件變量與某文件聯系起來,提供訪問文件的接口,例如:open(MYVAR, "/u/file"); 如果文件打開成功,則返回非零值,否則返回零。缺省地,open打開文件用以讀取其內容,若想打開文件以寫入內容,則在文件名前加個大于號:open(MYVAR, ">/u/file"); 向已有的文件末尾添加內容用兩個大于號:open(MYVAR, ">>/u/file"); 若想打開文件作為數據導向的命令,則在命令前加上管道符( ):open(MAIL, " mail dave");
2)用open重定向輸入
可以把打開的文件句柄用作向程序輸入數據的命令,方法是在命令后加管道符( ),如:
open(CAT, "cat file* ");
對open的調用運行命令cat file* ,此命令創建一個臨時文件,這個文件的內容是所有以file打頭的文件的內容連接而成,此文件看作輸入文件,可用文件變量CAT訪問,如:
$input = ;
下面的例子使用命令w的輸出來列出當前登錄的所有用戶名。

1 : #!/usr/local/bin/perl
2 :
3 : open (WOUT, "w ");
4 : $time = ;
5 : $time =~ s/^ *//;
6 : $time =~ s/ .*//;
7 : ; # skip headings line
8 : @users = ;
9 : close (WOUT);
10: foreach $user (@users) {
11: $user =~ s/ .*//;
12: }
13: print ("Current time: $time");
14: print ("Users logged on:\n");
15: $prevuser = "";
16: foreach $user (sort @users) {
17: if ($user ne $prevuser) {
18: print ("\t$user");
19: $prevuser = $user;
20: }
21: }
結果輸出如下:

Current time: 4:25pm
Users logged on:
dave
kilroy
root
zarquon
w命令列出當前時間、系統負載和登錄的用戶,以及每個用戶的作業時間和當前運行的命令,如:

4:25pm up 1 day, 6:37, 6 users, load average: 0.79, 0.36, 0.28
User tty login@ idle JCPU PCPU what
dave ttyp0 2:26pm 27 3 w
kilroy ttyp1 9:01am 2:27 1:04 11 -csh
kilroy ttyp2 9:02am 43 1:46 27 rn
root ttyp3 4:22pm 2 -csh
zarquon ttyp4 1:26pm 4 43 16 cc myprog.c
kilroy ttyp5 9:03am 2:14 48 /usr/games/hack

上例中從w命令的輸出中取出所需的信息:當前時間和登錄的用戶名。第3行運行w命令,此處對open的調用指定w的輸出用作程序的輸入,用文件變量WOUT來訪問該輸入。第4行讀取第一行信息,即:
4:25pm up 1 day, 6:37, 6 users, load average: 0.79, 0.36, 0.28
接下來的兩行從這行中抽取出時間。首先,第5行刪除起始的空格,然后第6行刪去除時間和結尾換行符之間的所有字符,存入變量$time。
第7行從WOUT讀取第二行,這行中無有用信息,故不作處理。第8行把剩下的行賦給數組@users,然后第9行關閉WOUT,終止運行w命令的進程。
@users中的每個元素都是一行用戶信息,因為本程序只需要每行的第一個單詞,即用戶名,故10~12行去掉除換行符外的其它字符,這一循環結束后,@users中只剩下用戶名的列表。
第13行輸出存貯在$time中的時間,注意這時print不需要加上換行符,因為$time中有。16~21行對@users中的用戶名排序并輸出。因為同一個用戶可以多次登錄,所以用$preuser存貯輸出的最后一個用戶名,下次輸出數組元素$user時,如果其與$preser相等,則不輸出。
3)文件重定向
許多UNIX shell可以把標準輸出文件(STDOUT)和標準錯誤文件(STDERR)都重定向到同一個文件,例如在Bourne Shell(sh)中,命令
$ foo > file1 2>&1
運行命令foo并把輸出到標準輸出文件和標準錯誤文件的內容存貯到文件file1中。下面是用Perl實現這一功能的例子:

1: #!/usr/local/bin/perl
2:
3: open (STDOUT, ">file1") die ("open STDOUT failed");
4: open (STDERR, ">&STDOUT") die ("open STDERR failed");
5: print STDOUT ("line 1\n");
6: print STDERR ("line 2\n");
7: close (STDOUT);
8: close (STDERR);
運行后,文件file1中的內容為:
line 2
line 1




主站蜘蛛池模板: 日产久久 | 亚洲永久免费网站 | 日本激情视频网站w | 探花视频在线看视频 | 天天久久综合网站 | 三级三级三三级a级全黄 | 日本久久99 | 色视频线观看在线播放 | 亚洲一区二区福利视频 | 在线亚洲+欧美+日本专区 | 欧美一级淫片免费观看 | 中文字幕永久在线视频 | 欧美专区一区 | 亚洲国产欧美在线人成精品一区二区 | 啪啪噜噜 | 青草精品 | 亚洲 欧美 清纯 丝袜 另类 | 最新国产精品精品视频 | 色91视频| 日韩成人影片 | 在线日韩视频 | 亚洲成a人v欧美综合天堂麻豆 | 亚洲欧美自拍视频 | 日本高清二区 | 日韩欧美视频 | 五月婷婷丁香在线 | 涩涩涩在线视频 | 婷婷综合激情五月中文字幕 | 天天做爽夜夜做爽 | 四虎影视国产在线观看精品 | 婷婷六月激情 | 日韩毛片免费在线观看 | 一个色亚洲 | 天天躁狠狠躁 | 日韩中文一区 | 亚洲欧美日韩成人一区在线 | 日本亚洲欧美国产日韩ay高清 | 天美传媒麻豆自制剧 | 日本四虎影院 | 三级亚洲 | 一二三四免费观看高清观看在线 |