ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:27.08KB ,
资源ID:2335082      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2335082.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(perl 入门.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

perl 入门.docx

1、perl 入门perl 入门.txt我的人生有A 面也有B面,你的人生有S面也有B面。 失败不可怕,关键看是不是成功他妈。现在的大学生太没素质了!过来拷毛片,居然用剪切!有空学风水去,死后占个好墓也算弥补了生前买不起好房的遗憾。Perl CGI入门2008年02月03日 星期日 09:02.1 Unix环境本教程将与您一起学习在Unix平台上用Perl创建CGI。和其它教程不同,我们并不假设你了解CGI、Perl或Unix。学完本教程后,你将能够建立Perl的计数器、留言板和处理安全口令的程序。同时你也会对Perl语言有所了解,学习使用其变量、if语句和循环。什么是CGI?CGI代表通用网关接

2、口(Common Gateway Interface)。本质上,CGI是运行在服务器上的程序。它可以用任何语言编写- 只要能够在你的服务器上运行。Perl之所以能够成为CGI编程的首选,是因为它可以适应所有的平台,而且拥有很多对Web来说非常理想的工具。当我在一个网页上填充一个form并按Submit时,有2件事在服务器上发生:敲入或选择的所有信息被拷贝到服务器。服务器寻找在form顶部确定的程序,然后运行之。程序做的第一件事通常是请求网页form中的内容,然后把它赋给变量。然后程序可以查询数据库、发送一封电子邮件或加入留言板、或者任何你想做的事。我们通过例子学习教程。对每个新的主题,我们查看

3、整段代码,然后分成小片段并进行讨论。在你在Unix服务器上使用Perl之前,应该对Unix有一些了解。Unix环境你应该会用Telnet登录到Unix服务器上以便能用Perl创建CGI。你也应该能把文档FTP到服务器上。实际上,Unix是一种最强大和灵活的操作系统。当作为终端使用时,用户用一种称为X-Windows的图形用户界面。X-Windows因为在互联网上太慢而无法使用,所以我们将使用命令行方式。命令行提示每次在Unix中输入新的一行,将得到一个命令行提示。通常以机器名然后跟着一个%或#字符的形式出现。这是输入基本命令来创建、拷贝、移动和删除文件的地方,还可以做其它事情。试试这些联系:打

4、开你最喜欢的Mac或PC字处理器。对于HTML来说,用一种简单的能把代码存成纯文本的编辑器。敲入这行:Thisis a dummy sentenc.把文件保存为practice.txt。用FTP程序把这个文件上载到服务器上。注意:应该以ASCII的方式上载你的CGI文件,不能用binary方式。用TELNET程序访问你的Web服务器。用你的用户名和口令LOGIN。敲入ls然后按回车键(注意:使用小写,Unix区分大小写),你的Web服务器中的内容将列在屏幕上,应该能够看到你的practice.txt。敲入pwd然后按回车。pwd代表“打印工作目录(PrintWorking Directory)

5、”。从服务器的ROOT目录到你的当前目录的路径将显示出来。例如,我的主目录是/home/usr/robyoung/htdocs。敲入mkdir myfolder然后按回车 - 创建一个叫myfolder的目录。敲入mv practice.txt myfolder/practice.txt然后按回车 - 把practice.txt移动到myfolder中。敲入cd myfolder然后按回车 - 进入myfolder目录。敲入pwd然后按回车 - 路径名以/myfolder结束。敲入ls然后按回车 - myfolder中的内容将显示出来 -只有practice.txt。敲入cp practice

6、.txt copy2.txt然后按回车 -做一个拷贝。敲入ls然后按回车 - 将列出两个文件。敲入rm copy2.txt然后按回车 - 删除这个文件。敲入ls然后按回车 - 只剩下practice.txt。1.2 chmod命令创建CGI程序时,需要改变其访问权限以便能从网页中执行之。我们用chmod命令实现这个目的。chmod命令有两个参数- 谁拥有权限和他们将拥有哪些权限。1.谁拥有权限?有三类不同的权限:User、Group和Others - 用字母u、g和o表示。字母a表示所有类别。2.可以拥有什么权限?有3种类型的权限:Read、Write和eXecute,用字母r、w和x表示。权

7、限通过等号赋予(=r、或=rw、或=rx),或者通过加号(+r或+rwx)或减号(-w或-rwx)。3.如何敲入命令?对于大多数CGI程序,我想让所有人都有读和执行的权限,但没有写的权限,因此没有人可以删除或编辑我的程序。下面是最常见的命令:chmod a+rx filename.cgi表示让所有人有读和执行的权限。当我创建一个文件时,我拥有完全的读、写和执行权限,但其他人没有任何权限。这个命令让所有人可以运行我的程序。在myfolder文件夹中试试这个例子:入ls -l然后按回车。显示出关于practice.txt的很多信息,包括大小、拥有者和最后保存的日期。观察访问权限,可能是这样:rwx

8、-或rw-r-r-或rw-r-,前3个指明user权限(读、写、执行)。然后的三个是group权限(无),最后的三个为other权限(无)。敲入chmod a+rx practice.txt然后按回车 -为所有类别增加读和执行权限。敲入ls -l然后按回车 - 这时显示的权限为rwxr-xr-x,指明拥有者仍然拥有所有权限,group和others有读和执行权限,但没有写的权限。敲入chmod go-x practice.txt然后按回车。敲入ls -l然后回车 - 现在的权限为rwxr-r-,指明拥有者仍有完全的权限,group和others只有读的权限。删除myfolder文件夹敲入rm

9、practice.txt然后按回车。敲入cd .敲入rmdir myfolder 1.3 定位Perl和sendmail定位Perl程序每个Perl程序指明Perl在系统中的位置。于是外部的网页可以知道执行什么程序和去哪找它。从命令行提示符敲入which perl然后按回车。系统返回类似这样的结果:/usr/bin/perl或/usr/local/bin/perl记下这个结果,这是你的系统中Perl的位置,以后会用到。如果系统没有返回结果,再试试:敲入whereis perl然后回车。如果还没有得到Perl的路径,需要给你的系统管理员发一封EMAIL。定位sendmail程序敲入whereis

10、 sendmail,然后按回车。会返回几个结果,其中一个以sendmail结尾。例如,我在我的系统上得到的结果是:sendmail: /etc/sendmail.cf /etc/sendmail /etc/sendmail.st/usr/lib/sendmail.no_mx /usr/lib/sendmail.mx /usr/lib/sendmail /usr/lib/sendmail.hf/usr/man/man8/send以/usr/开始sendmail结束的是:/usr/lib/sendmail,这是我们要记下的。如果你在定位Perl程序或sendmail程序时遇到问题,应该email给

11、你的系统管理员,询问正确的路径。2.1 使用Emacs当我已经有一个很好的PC上的图形界面的面向鼠标的编辑器时,为什么我还想要一个基于文本的编辑器呢?答案是Emacs运行在你的Unix平台上,所以可以方便地做小的修改。基本上当你维护你在Unix平台上的工作时,你有两个选择:1. 在PC上使用图形界面的文本编辑器,然后FTP你的文件到Unix服务器上。当你做修改时,保存你的修改,然后再FTP上去。这种方式的好处是你可以在一个舒适的、面向鼠标的编辑器中做所有的工作。缺点是每次上传文件都要花费时间。2. 用一种Unix编辑器,如Emacs,直接保存你的修改到服务器上。它的界面不太漂亮,而且不能用鼠标

12、,但一旦你用惯了,就能做任何事。我宁愿在做小的修改时使用Emacs,而不愿每次上传文件。开始Emacs教程:敲入emacs然后按回车。屏幕将显示emacs编辑器环境。如果你的服务器显示“Emacsnot found”,那么你应该给你的系统管理员发一封Email,问问是否有可用的文本编辑器并且是否有在线教程。敲入ctrl-h然后按t。这时将调出教程。可能要花几个小时学习Emacs教程。你对Emacs越了解,编辑Perl越容易。要点:保存文件 - 敲入ctrl-x然后按ctrl-s。退出 - 敲入ctrl-x然后按ctrl-c。打开文件 - emacs filename。2.2 Perl简介2.2

13、 Perl简介准备模板在你的PC或Mac上建立一个文件夹 - perltour。点击这里下载模板文件 -template.txt。把它保存到perltour文件夹中。在你最喜欢的文本编辑器中打开这个文件。把第一行替换为你已经定位的Perl路径。对于WindowsNT用户:删除这行。你的机器使用.pl文件扩展名开定位Perl,所以要保证你的文件的扩展名为.pl而不是.cgi。找到文档的倒数第八行 - open(MAIL,|/usr/lib/sendmail -t) | die 把/usr/lib/sendmail替换为你已经定位的sendmail路径。找到下一行 - Content-type:

14、text/textnnCant open/usr/lib/sendmail!; 把/usr/lib/sendmail替换为sendmail路径。保存文件。从现在开始你每次创建一个新的CGI时都可以拷贝这个template.txt文件。建立一个测试文件我们现在建立一个测试用的CGI程序然后上传到服务器上。注意:有些服务器允许你的CGI程序可以在任何web目录中- 只要文件名以.cgi结束。有的服务器要求只能把它们放在cgi-bin目录中。可以跟你的系统管理员确认是哪种情况。拷贝template.txt到test1.cgi中(在NT上为test1.pl)。打开test1.cgi然后找到#*BEGI

15、N BODY* 在这行后面加入一行:print HelloWorld;保存文件。如果不需要把脚本放在cgi-bin目录中.用Telnet程序登录到你的Unix服务器上。在Unix命令提示符下,敲入mkdir perltour然后按回车。敲入chmod a+rx perltour然后按回车。把test1.cgi文件FTP到perltour文件夹中。注意:应该以ASCII方式上传你的CGI文件,不能用binary方式。敲入chmod a+rx test1.cgi然后按回车。敲入ls -l然后按回车。这时你可以看到test1.cgi的权限:rwxr-xr-x,表明任何人都可以读和执行这个文件。运行浏

16、览器,输入你的主目录URL,把/perltour/test1.cgi加在URL后面。如果需要把脚本放在cgi-bin文件夹中.用Telnet登录到你的Unix服务器上。向系统管理员询问cgi-bin的路径。在Unix命令提示符下,敲入cd cgi-bin路径,然后按回车。把test1.cgi文件FTP到服务器的cgi-bin文件夹中。注意:应该以ASCII方式上传你的CGI文件,不能用binary方式。敲入chmod a+rx test1.cgi然后按回车。敲入ls -l然后按回车。这时你可以看到test1.cgi的权限:rwxr-xr-x,表明任何人都可以读和执行这个文件。运行浏览器,输入你

17、的服务器的URL,把/cgi-bin/test1.cgi加在URL后面。例如, Hello World将以大字母出现,表明CGI正常工作。2.3 HTML FORM2.3 HTML FORM这页很简单 -建立一个用户可以输入信息的基本的form。form顶部的标记符有两个参数:ACTION=path/to/myscript.cgi和METHOD=post。把这个文件保存在perltour文件夹中,用文件名test2.cgi。把下面代码拷贝到文件testform.htm中,然后把它FTP到perltour文件夹中。 My first form First Name Last Name E-mai

18、l 当用户点击form底部的submit按钮时,服务器将执行程序test2.cgi并把用户输入的信息传递给程序。Method可以是POST或GET。注意:如果你的服务器使用cgi-bin文件夹,你的HTML文件中的form中的script名前应加上/cgi-bin/。例如,3.1 回应脚本3.1 回应脚本这段脚本将显示输入到HTML FORM中的文本。它是一个信息如何传递给你的程序的简单的例子。既然你现在已经有了一个有着正确的Perl和Senmail的路径的template.txt文件,下面要做的只是编辑CGI的BODY部分。拷贝下面脚本的BODY部分到template.txt,然后保存到一个

19、新文件test2.cgi中。FTP test2.cgi到perltour文件夹(或cgi-bin)中。然后在Unix提示符下,进入perltour(或cgi-bin)文件夹,敲入chmoda+rx test2.cgi设置权限。现在可以在你的浏览器中打开服务器上的testform.htm,测试这个form。当你填充这个form并按TestIt时,CGI告诉你你输入了什么。#!/usr/local/bin/perl # &readparse; print Content-type: text/htmlnn; # #*BEGIN BODY*print Thank you for filling ou

20、t theform;$firstname = $value0; $lastname = $value1; $email = $value2; print Your first name is $firstname; print Your last name is $lastname; print Your e-mail is $email; #*END BODY*3.2 脚本解释3.2 脚本解释现在让我们看看这段代码。#!/usr/local/bin/perl # &readparse; print Content-type: text/htmlnn;#*BEGIN BODY* Unix上的每

21、个CGI的第一行都是运行它的程序的路径。记住,你的可能与上面写的不同。服务器将按这个路径定位Perl,然后用Perl解释器执行程序。这是唯一的有#并且对程序有意义的一行。程序其余部分的#只是注释,程序将忽略其后的内容。第三行是一个命令,&readparse;。这是一个子过程,输入所有进入HTMLFORM中的文本。第四行对所有CGI都是必须的,它告诉服务器我们要打印的任何信息都应该返回HTML文档。这些行永远不会改变,因此下面我们集中在BODY部分的内容上。3.3 BODY部分3.3 BODY部分#*BEGIN BODY*print Thank you for filling out thefo

22、rm;$firstname = $value0; $lastname = $value1; $email = $value2; print Your first name is $firstname; print Your last name is $lastname; print Your e-mail is $email; #*END BODY* 对于Perl,我们需要知道:每行以分号结束。变量以$开始。第一行很直接 - print将打印随后的内容到屏幕上。要打印的内容必须在引号内,其中可以包含HTML标记符。readparse子过程自动把HTML FORM中的内容放入一个称为value的

23、数组中。这样,第一个文本框中的内容是$value0,第二个文本框中的内容是$value1,等等- 数组下标以0开始。第二行我们执行命令:$firstname = $value0; 这个语句创建一个称为$firstname的新变量,把$value0的内容赋给它。这意味着在HTMLFORM中第一个文本框中输入的信息将包含在变量$firstname中。第三行和第四行与此类似:$lastname = $value1; $email = $value2; 很明显,这两行分别把第二个和第三个文本框中的内容赋给变量$lastname和$email。程序的最后三行把文本和变量打印到屏幕上。print Your

24、 first name is$firstname; print Your last name is $lastname; print Your e-mail is $email;注意变量被包含在双引号中。在其它语言,如JavaScript中,我们必须显式的连接文本和变量。在Perl中,当它看到$时,就会使用变量的内容。不错,是吧?但是要注意,只有双引号才能这样,单引号只是从字面上引用其中的内容。4.1 email子过程4.1 email子过程#*BEGIN BODY*print Thank you for filling out theform;$firstname = $value0; $l

25、astname = $value1; $email = $value2; print Your first name is $firstname; print Your last name is $lastname; print Your e-mail is $email;$to = $email; $from = clintonwhouse.gov; $sub = subject of my first e-mail; $body = The form was filled out by $firstname $lastname Thank you goes on another line.

26、;&email($to,$from,$sub,$body); #*END BODY* 在上面的例子中,我在程序的BODY后面增加了7行。你需要拷贝这些行到test2.cgi的BODY中。有两种方式:在PC上的文本编辑器中进行拷贝和粘贴,然后用FTP重新上传,这时不必重新运行chmod。可以在Unix提示符下运行Emacs或Pico,对文件进行修改,然后保存和退出。这时你可以再试试form。要在testform.htm页面中输入你自己的邮件地址。当你提交这个form时,显示结果与以前一样。但如果你在几秒种后查看你的e-mail,你会看到一封来自PresidentClinton的消息。让我们看看这

27、些行:$to = $email;- 拷贝变量$email中的内容到变量$to中。$from = clintonwhouse.gov;- 设置变量$form为clintonwhouse.gov。反斜线()称为escapecharacter。符号在Perl中有特殊意义,表示一个数组,这时,如果我们不想引用数组,而只用符号本身,需要在前面加一个。例如,如果我敲入下面这行:$amount = He owes me $20.00; 将得到一个错误,因为Perl将试图访问一个称为$20.00的变量。我们可以这样写:$amount = He owes me $20.00;$sub = subject of

28、my first e-mail; 这行很直接。$body = The form was filled out by $firstname$lastname Thank you goes on another line.;这只是一个命令 - Perl命令总以分号结束。返回的字符是赋给$body的字符串中的另一个字符。这很方便,因为可以敲入引号,然后象在字处理器中一样敲入多行文本,然后用引号结束。最后,象其它语句一样敲入引号。也可以象这样而得到相同的结果:$body = The form was filled out by $firstname$lastname n Thank you goes on another line.;n为换行符 - 当双引号中包含n时,把它翻

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2