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