一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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
主站蜘蛛池模板: 俄罗斯男男激情1069gay | 日本深夜视频 | 久99久热只有精品国产99 | 古装一级无遮挡毛片免费观看 | 67194最新网址 | 扒开女人下面使劲桶屁股动漫 | 男人午夜视频在线观看 | 男人的影院 | 美日韩一区二区三区 | 91高清在线视频 | 男人女人叉叉叉 | 天天操网 | 91次元成年破解版 | 午夜爱| 国产亚洲精品美女久久久 | 日韩高清在线免费观看 | 黄+色+性+人免费 | 婷婷在线成人免费观看搜索 | 91免费播放人人爽人人快乐 | 亚洲日本va中文字幕 | 人人福利 | 99久久er这里只有精品17 | 日韩欧美高清 | 日韩在线免费看 | 成人免费片 | 色天天综合色天天碰 | 欧美一级特黄aaa大片 | 日本视频在线免费观看 | 国产精品欧美亚洲韩国日本99 | 皇上撞着太子妃的秘密小说 | 亚洲国产日韩成人综合天堂 | 丁香五香天堂 | 奶茶视频有容乃大 | 国产精品suv一区二区 | 超级乱淫变态伦短篇小说全集 | 任我行视频在线观看国语 | 9自拍视频在线观看 | aⅴ视频在线免播放观看 | 5g影院天天影院天天爽影院网站 | 女人肮脏的交易中文字幕未删减版 | 日本大片免a费观看在线 |