Re: [問題] cgi中以二進位寫入(binmode)

作者: Neisseria (Neisseria)   2015-11-12 06:42:47
※ 引述《hijkxyzuw (i,j,k) ×(x,y,z)》之銘言:
: 請問寫入時為什麼要用binmode? 也就是`binmode(FHD);`的意義。
: 我寫了一個供上傳的腳本,目前沒有放那行,運作正常。
: (上傳gif, gzip, txt, 再下載都沒有異常,用diff指令看也一樣。 )
用 binmode 是防止檔案損害、節錄:
the binmode function tells Perl to write the file in binary mode, rather
than in text mode. This prevents the uploaded file from being corrupted on
non-UNIX servers (such as Windows machines).
出處:http://www.sitepoint.com/uploading-files-cgi-perl-2/
: =================================================================
: 另外問一下,一般都怎麼處理用html表單上傳的檔案?
: 除了用cgi模組直接讀取外。
: (一直不懂模組、物件導向;而且server也不是我的。)
: 我是直接砍掉首四行,末x行。(看表單有沒有其它值。)
: 還有上傳的檔案是什麼時候需要解碼?
: (目前我只有用到上傳檔案,寫入、讀取沒有問題。)
不太確定這裡提到的『砍掉首四行,末x行』是什麼意思
是指去除一些 HTML tag 嗎?再分享一下細節?
Perl 的物件導向不太好學,會用到 module
後來的人為了改善這點,創造了 Moose,但是反而要學更多東西
建議先學純 module,就是不加入物件導向,單純放 subroutine
之後再學傳統的 Perl OOP,就是用 blessed hash 或 array 搭配 module
之後再學 Moose,雖然這不是內建的功能,但是對 OOP 蠻有幫助的
不過,實務上,可以用 Moo 取代 Moose,Moo 比較小,啟動速度也比較快
: ===============================================================
: 我是perl新新手,最近在學perl, 學的方法是寫cgi.
: 之前是用php.
: 但覺得perl是通用語言,學起應該不錯,就跳槽了。
這種學習方式還蠻特別的,一般不是學 command line app 比較簡單嗎?
command line app 不用透過網頁進行 I/O,寫起來會比較快
現在很少人在寫 CGI 了,除非是很簡單的單頁網頁
就算是 PHP,也較少土炮單頁的 PHP 網頁,而會引入 framework
喜歡寫 CGI 的話,建議用 Dancer (http://perldancer.org/)
對於不需要寫後台管理的中小型網站
我個人還蠻建議用 Sinatra-like framework
Sinatra-like framework 的特色是用 HTTP action 做為組織 code 的方式
不過,這種 framework 沒有典型 MVC 的概念,要自已安排 code 就是了
這種概念的 framework 在很多語言都可以看到,包括 Dancer 和 Mojolicious
: 目前覺得perl的語法有點亂……,處處充滿驚奇R! XD
: 也許我該學個「工整」、「制式化」的語言作基礎才對。
: 像python, java, pascal....
的確有時候會有這種感覺,有時候寫錯了也可以跑
先在 use strict; use warnings; 的模式下練習,這種感覺會比較少
可以找一本時間較近的參考書籍,對學習會有幫助
像是 Beginning Perl, Curtis Ovid Poe, Wrox 2012 這本寫得不錯
而且會提到一些比較新的東西,像是 Moose 等
學程式語言,除了語法上的不同,還是要看實用面
像 Perl 或 AWK,可以寫 one-liner 程式
雖然可以用對等的 Python 程式完成,但是就是比較慢
如果用對等的 Java 也可以,但只會更慢
作者: hijkxyzuw (i,j,k) ×(x,y,z)   2015-11-12 13:29:00
意思是如果不用binmode, 會自動把CRLF換成LF嗎?而用了binmode, 寫入時就不會對內容更改,直接寫入?前四行是報頭`...Content-Type: text/html name:"file"
作者: Neisseria (Neisseria)   2015-11-13 00:06:00
可能要再自已查一下 binmode 的功能

Links booklink

Contact Us: admin [ a t ] ucptt.com