激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

香港云服务器
服務器之家 - 腳本之家 - perl - Perl文件句柄詳解

Perl文件句柄詳解

2020-06-15 10:23Perl教程網 perl

本文介紹一下Perl文件句柄的概念,要從文件中讀取一塊數據,應用程序需要調用函數ReadFile,并將Perl文件句柄在內存中的地址和要拷貝的字節數傳送給操作系統

在文件I/O中,要從一個文件讀取數據,應用程序首先要調用操作系統函數并傳送文件名,并選一個到該文件的路徑來打開文件。該函數取回一個順序號,即Perl文件句柄(filehandle),該Perl文件句柄對于打開的文件是唯一的識別依據。要從文件中讀取一塊數據,應用程序需要調用函數ReadFile,并將Perl文件句柄在內存中的地址和要拷貝的字節數傳送給操作系統。當完成任務后,在通過調用系統函數來關閉該文件。

除了你模仿唯我論者哲學家編寫一個人工智能程序,你的程序使用不和外界通訊的方法。在班級例子中的第三和四行,你將看到"GRADES",這是引用另一個Perl文件的數據類型,稱為據柄(filehandle)。一個句柄就是你給一個文件,設備,管套(socket)或管道的一個名字,以便幫助你記住你正處理的名字,并隱藏某些緩存等的復雜性。(在內部,句柄類似C++語言的流(streams),或BASIC中的I/O通道)句柄使你從不同的地方輸入和輸出給不同的地方都較容易。使Perl成為好語言的一個原因是它能和多個文件通訊并一次處理他們。對外部對象有好的符號名字是一個好語言的一個組成部分[1]。

其他使Perl是一個好語言的是:它是8位的,是可嵌入的,你能通過擴展模式在Perl中嵌入其他程序。它是簡明的,網絡上容易使用。環境上是清楚的,容易對話。你能以許多不同的方法引用它(就象前面看到的)。總之,語言本身不是如此嚴格的結構,以至于你不能使它超出你的問題。又回到TMTOWTDI。

你創建一個句柄,并通過open函數把它和一個文件聯結。open有兩個參數:句柄和你想與它聯結的一個文件名。Perl也給出一些預定義(和預打開的)句柄。STDIN是你程序的正常輸入通道,而STDOUT是你程序的正常輸出的通道。STDERR是一個附加的輸出通道,以便當把輸入轉為輸出時,程序能給出一些說明[2]。

一般地,這些句柄和你的終端聯結,所以你能輸入你的程序并能看到,但他們也可以和文件聯結。Perl能給你這些預定義句柄,因為你的操作系統已提供這些。在UNIX下,進程從他的父進程(一般是一個shell)繼承標準輸入,輸出和錯誤。一個shell的責任之一是建立這些I/O流,以便子進程不必考慮這些)。
既然你能為各種目的(輸入,輸出,管道)使用open函數創建句柄,你就必須能指明你要做什么。就象在UNIX命令行一樣,你給文件名簡單地加些字符。

 

復制代碼 代碼如下:

open(SESAME,"filename");#從已存在的文件讀
open(SESAME,"<filename");#顯式地,同上面
open(SESAME,">filename");#創建一個文件并對它寫
open(SESAME,">>filename");#對已有的文件接著寫
open(SESAME,"|output-pipe-command");#建立一個輸出過濾
open(SESAME,"input-pipe-command|");#建立一個輸入過濾

 

就象你看到的,你可以任意選名字。一旦打開句柄SESAME,它就能被用于存取文件或管道,直到它被顯式地關閉(用close(SESAME)),或對同一句柄的一系列open把這個句柄和另一文件聯結[3]。

打開一個已打開的句柄是隱式地關閉第一個文件,使它對Perl文件句柄不可取,并打開一個不同的文件。你必須小心這是你真正想做的。有時,偶然碰巧,比如,當你open($handle,$file)時,$handle正好包含空串(null)。確認設置$handle為某個單一個量,否則你將對空句柄打開一個新的文件。
一旦你已為輸入打開一個句柄(或你使用STDIN),你就能使用"行讀操作"<>,讀一行。這個也以鉆石操作聞名,因為它的形狀。這個鉆石操作包含你想讀的句柄()[4]。使用STDID句柄讀用戶提供的答案,如下:

空鉆石操作<>,將從命令行指定的所有文件讀,如果沒有指定,從STDIN讀。(這是許多UNIX"過濾"程序的標準行為)

 

復制代碼 代碼如下:

printSTDOUT"Enteranumber:";#請求輸入一個數
$number=<STDIO>;#輸入一個數
printSTDOUT"Thenumberis$number";#輸出這個數

 

你明白我們給你的例子嗎?在print語句中STDOUT做什么?這就是你使用一個輸出句柄的方法之一。一個句柄可以作為print語句的第一個參數,如果存在,告訴往哪兒輸出。在例子中,句柄是冗余的,因為輸出已經是STDOUT。對于輸入的缺省是STDIN,對于輸出的缺省是STDOUT。(在班級例子的18行,我們為避免使你混淆,我們省略了。)
我們也有一件事使你不明白。如果你試上面的例子,你可以注意到你得到一個特別的空行。因為讀時沒有自動地從你的輸入行中刪除換行符(newline)(例如,你輸入"9")。對于這些情況,當你想刪除換行符時,Perl提供chop和chomp函數。chop將不加區別地刪除(并返回)傳給它的最后一個字符,而chomp只刪除記錄標識的末尾(一般地是""),并返回這樣刪除的字符數。

延伸 · 閱讀

精彩推薦
  • perlperl常見問題集合之二

    perl常見問題集合之二

    哪些平臺上有 Perl?要到哪里去找? Perl的標準發行版(由 perl 發展小組負責維護)僅以原始碼形式發行。您可在 http: //www.perl.com/CPAN/src/latest.tar.gz處取得。這個檔...

    腳本之家2102020-05-29
  • perlPerl使用nginx FastCGI環境做WEB開發實例

    Perl使用nginx FastCGI環境做WEB開發實例

    這篇文章主要介紹了Perl使用nginx FastCGI環境做WEB開發實例,實現了路由系統和模板系統,需要的朋友可以參考下...

    Perl教程網2412020-06-18
  • perlperl pop push shift unshift實例介紹

    perl pop push shift unshift實例介紹

    perl的pop跟push操作數組的最右邊,shift跟unshift操作數組的最左邊 ...

    腳本之家4612020-06-10
  • perlPerl List::Util模塊使用實例

    Perl List::Util模塊使用實例

    這篇文章主要介紹了Perl List::Util模塊使用實例,本文給出掃描符合條件的某個列表并取出第一個符合條件的、求1到1000之間的和 、求一組數字的最大值與最小...

    腳本之家4712020-06-22
  • perlPerl從文件中讀取字符串的兩種實現方法

    Perl從文件中讀取字符串的兩種實現方法

    有時候我們需要從文件中讀取字符串,這里簡單介紹下, 需要的朋友可以參考下 ...

    腳本之家6252020-06-08
  • perlperl use vars pragma使用技巧

    perl use vars pragma使用技巧

    perl 中的vars是perl中的一個pragma(預編譯指示符),專門用來預定義全局變量,這些預定義后的全局變量在qw()列表中,在整個引用perl文件中皆可使用,即便使...

    perl教程網6812020-06-16
  • perlPerl的經典用法分享

    Perl的經典用法分享

    Perl的經典用法分享,學習perl的朋友可以參考下 ...

    腳本之家6562020-06-06
  • perlperl命令行參數內建數組@ARGV淺析

    perl命令行參數內建數組@ARGV淺析

    這篇文章主要介紹了perl命令行參數內建數組@ARGV淺析,本文重點在于講解@ARGV的用法,并通過實例來說明,需要的朋友可以參考下 ...

    perl教程網6162020-06-18
1584
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 欧美日韩在线看片 | 9丨九色丨国产 | av在线视 | 亚洲欧美日韩一区二区三区在线观看 | 天天躁狠狠躁夜躁2020挡不住 | 日本特级a一片免费观看 | 伊人在线 | 欧美一级毛片美99毛片 | 欧美性受xxxx人人本视频 | 久草热久草视频 | 天天草天天干天天 | 看毛片电影 | 精品一区二区三区免费毛片 | 亚洲va久久久噜噜噜久牛牛影视 | 欧美一级高潮 | 美国一级免费视频 | 成人在线观看地址 | 在线免费观看欧美 | a视频在线播放 | 欧美日韩精品不卡一区二区三区 | 毛片视频大全 | 高颜值美女啪啪 | 久在线观看 | 不卡一区二区三区视频 | 蜜桃视频最新网址 | 最新中文字幕免费视频 | 青草久久久久 | 免费日本一区二区 | 精品亚洲视频在线 | 精品国产第一区二区三区 | 欧美一级片在线 | 亚洲第一色婷婷 | arabxxxxvideos| 成年性羞羞视频免费观看无限 | 夜间福利视频 | 在线观看免费av网 | 国产精品嘿咻嘿咻在线播放 | 第一福利在线 | 精品一区二区在线观看视频 | 91亚洲精品一区二区福利 | 百分百出品 |