溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Perl文件句柄怎么用

發(fā)布時間:2021-12-06 10:49:32 來源:億速云 閱讀:197 作者:小新 欄目:開發(fā)技術

小編給大家分享一下Perl文件句柄怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Perl文件句柄

Perl腳本通過間接Perl文件句柄連接到外部世界。從間接Perl文件句柄讀就導入外部數(shù)據(jù),向間接Perl文件句柄寫則導出數(shù)據(jù)。根據(jù)間接Perl文件句柄的創(chuàng)建方式,可能連向:

磁盤文件。
硬件設備,例如打印機等。
本地進程,例如窗口系統(tǒng)中的一個命令行窗口。
遠程進程,例如一個網(wǎng)絡服務器
"位存儲桶"設備,也就是Unix/Linux系統(tǒng)中的/dev/null,該設備僅是吸引數(shù)據(jù)并忽略它。
間接Perl文件句柄可以是任何有效的Perl標識符,由大小寫字母、數(shù)字和下劃線字符組成。不同于其他變量的是,間接Perl文件句柄沒有標志性的前綴(像"$","@","%")。因此,為了使間接Perl文件句柄有所區(qū)別,Perl程序員經(jīng)常以全部大寫字母表示它們。

當Perl腳本開始執(zhí)行時,默認地打開3個間接Perl文件句柄:STDIN,STDOUT和STDERR。STDOUT間接Perl文件句柄(即"standardoutput")標準輸出,是默認的輸出間接Perl文件句柄。發(fā)送給這個間接Perl文件句柄的數(shù)據(jù)在用戶指定的輸出設備上顯示,通常是腳本開始運行的命令行窗口。STDIN(即"standardinput")標準輸入,是默認的輸入間接Perl文件句柄。從這個間接Perl文件句柄讀取的數(shù)據(jù)取自用戶選擇的輸入設備,通常是鍵盤。STDERR(即"standarderror")標準錯誤輸出,用于錯誤信息、診斷、調試和其他類似的偶發(fā)輸出,默認情況下,STDERR和STDOUT使用相同的輸出設備,但是用戶可以自行改變。

正常輸出和不正常輸出有不同的獨立間接Perl文件句柄,這樣用戶就能夠獨立地轉移它們;例如,將正常輸出發(fā)送到文件而將錯誤輸出發(fā)送到屏幕。

#!/usr/bin/perl-w  chomp($input=<>);  print"IfIheardyoucorrectly,yousaid:$input\n";

STDERR是warn()函數(shù)和die()函數(shù)的默認目標。用戶在開始執(zhí)行腳本之前可以改變?nèi)齻€標準間接Perl文件句柄的連接。在Unix/Linux和Windows系統(tǒng)上,使用重定向元字符"<"和">"來完成這種改變。例如,對一個名為change.pl的腳本執(zhí)行這兩條重定向命令,將改變該腳本的標準輸入,使其從文件data.txt中讀取數(shù)據(jù),并改變標準輸出,使處理過的數(shù)據(jù)輸出到文件changed.txt中:

#perlchange.pl<data.txt>changed.txt

標準錯誤不改變,因此診斷信息(例如,從內(nèi)置的warn()函數(shù)和die()函數(shù)返回的信息)在屏幕上顯示。

間接Perl文件句柄

間接間接Perl文件句柄可以使名字空間的管理更簡單。由于間接Perl文件句柄對于當前包是全局
的,兩個函數(shù)試圖同時打開"INFILE"會導致沖突。如果兩個函數(shù)使用間接文
件句柄比如"my$infile",則不會發(fā)生沖突,也不用擔心以后會發(fā)生沖突。

"open"的***個參數(shù)可以是一個間接Perl文件句柄的引用。在Perl5.6.0中,如果
參數(shù)沒有初始化,Perl會自動創(chuàng)建一個間接Perl文件句柄,然后存儲在***個參數(shù)中,
例如:

open(my$in,$infile)ordie"Couldn'tread$infile:$!";  while(<$in>){  #dosomethingwith$_  }  close$in;

還有一個方便之處是當運行到作用域外或者使用undefine時,Perl文件句柄會
自動關閉。

subfirstline{
open(my$in,shift)&&returnscalar<$in>;
#noclose()required

 }

【編輯推薦】

以上是“Perl文件句柄怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI