以下是Net::FTP模塊中的一些常用方法及它們不同尋常的返回值的匯總。因為Perl有非常多的模塊,這些模塊又有非常多的方法,如果不是經常的使用它們,必須有一個快速的列表供日后要使用時不要再參考其他的技術文檔,拿來即用是Perl的風格,要將它發(fā)揚光大。 Net::FTP API 如何新建一個FTP對象 $ftp=Net::FTP->new($host[,%options])%options 可以對這個新建的FTP對象指定特定的選項,比如連接的超時時間等。 選項列表: Port Timeout Passive 為文件傳輸使用被動模式 BlockSize 傳輸?shù)膲K長度,默認為10240 如何登錄指定的FTP主機 $success=$ftp->login([$username][,$pwd][,$account]) login方法可以不加任何的參數(shù),默認以anonymous為賬戶名登錄,它會查找.netrc 文件來作為它的認證信息。 如何設置文件傳輸模式 $type=$ftp->ascii 或者 binary ascii適用于傳輸文本文件,這個方法返回前一個模式的值,比較的特殊。 如何得到遠程FTP服務器上的當前目錄 $dir=$ftp->pwd() 返回完整的工作路徑 如何刪除服務器上目錄,如果有權限 $success=$ftp->rmdir($dir) 如何創(chuàng)建目錄 $success=$ftp->mkdir($dir,$parents) 如果$parents為真,則會像mkdir -p這樣 如何取得某目錄內的文件名和目錄名的短路徑格式列表 @items=$ftp->ls($dir) 在標量上下文中,它返回對數(shù)組的引用。你可這樣使用它$ftp->(‘-lF’) @items=$ftp->dir() 這個和上面的ls差不多。它返回長格式形式的列表,像是ls -lg的形式。 如何從服務器上下載文件 $success=$ftp->get($remote,$local,$offset) $remote可以為完整路徑或者相對于當前目錄的相對路徑,$local可以指定下載的文件要存儲的名字,即文件重命名??梢园?local設定為一個存在的文件句柄,這樣下載的文件將發(fā)送到那個句柄中。比如$ftp->get(‘filename’,\*STDOUT)。$offset是為斷點續(xù)傳而準備的參數(shù),也就是它在傳輸前會從這個位置來傳輸。 如何直接檢索遠程文件不下載到指定的文件 $file_handle=$ftp->retr($filename) 這樣我們可以讀取這個文件句柄。print while<$file_handle> 如何上傳文件到遠程服務器上 $success=$ftp->put($local,$remote_dir) 如何初始化一個文件的傳輸 $file_handle=$ftp->stor($filename) 如果你能夠把文件從本地上傳到指定的遠程目錄內,這個方法返回一個文件句柄,之后我們就可以通過文件句柄來寫文件到遠程目錄的指定文件下。還有一個功能差不多的方法:appe(),從名字上看,它是追加的意思,而sotr則直接覆蓋已經存在的文件。 如何返回遠程文件的修改時間,如果FTP服務器支持 $modtime=$ftp->mdtm($file) 它返回從紀元元年到現(xiàn)在的秒數(shù);如果文件不存或者不是普通的文件,它返回undef。 如何得到遠程服務器的文件大小 $size=$ftp->size($file) 如果文件不存在或者不是普通文件,返回undef。它以字節(jié)為單位返回指定文件的長度。 如果取得FTP服務器反饋的消息 $mesage=$ftp->message() FTP以交互的形式工作,我們給FTP服務器發(fā)送一個指令,它進行解析并返回特定的消息,如 220 Serv-U FTP Server v6.4 for WinSock ready…,前面那個220指示命令完成的狀態(tài),大于500的表示FTP服務器內部的錯誤,400~499表示客戶端的錯誤,200~299表示命令成功完成。通常來說我們沒有成功登錄到指定的FTP時,message()方法可以報告發(fā)生了什么錯誤。 其他要點 Net::FTP是libnet實用程序的一部分,這個軟件包還包含其他的有用模塊,比如Net::Time、Net::SMTP,具體可以參看http://search./~gbarr/,這是此軟件包開發(fā)者的項目主頁。在這里隨便提下Net::Cmd模塊。這個模塊有兩個主要的方法:command() 和response()。 $success=$obj->command($cmd,@args) 此方法將$cmd指定的命令發(fā)送給服務器,可以為命令加一些參數(shù),它自動的在各參數(shù)之間加入空格進行分隔并將一個CRLF控制字符附加到命令的末尾。 $status=$obj->response() 它獲取服務器對最后一次命令的響應,返回一個數(shù)字作為狀態(tài)報告給我們,在失敗的情況下返回undef。 以上就是FTP模塊需要了解的部分,作為日后備忘的快速查閱。 |
|