perl 入门.docx

上传人:b****1 文档编号:2335082 上传时间:2023-05-03 格式:DOCX 页数:28 大小:27.08KB
下载 相关 举报
perl 入门.docx_第1页
第1页 / 共28页
perl 入门.docx_第2页
第2页 / 共28页
perl 入门.docx_第3页
第3页 / 共28页
perl 入门.docx_第4页
第4页 / 共28页
perl 入门.docx_第5页
第5页 / 共28页
perl 入门.docx_第6页
第6页 / 共28页
perl 入门.docx_第7页
第7页 / 共28页
perl 入门.docx_第8页
第8页 / 共28页
perl 入门.docx_第9页
第9页 / 共28页
perl 入门.docx_第10页
第10页 / 共28页
perl 入门.docx_第11页
第11页 / 共28页
perl 入门.docx_第12页
第12页 / 共28页
perl 入门.docx_第13页
第13页 / 共28页
perl 入门.docx_第14页
第14页 / 共28页
perl 入门.docx_第15页
第15页 / 共28页
perl 入门.docx_第16页
第16页 / 共28页
perl 入门.docx_第17页
第17页 / 共28页
perl 入门.docx_第18页
第18页 / 共28页
perl 入门.docx_第19页
第19页 / 共28页
perl 入门.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

perl 入门.docx

《perl 入门.docx》由会员分享,可在线阅读,更多相关《perl 入门.docx(28页珍藏版)》请在冰点文库上搜索。

perl 入门.docx

perl入门

perl入门.txt我的人生有A面也有B面,你的人生有S面也有B面。

失败不可怕,关键看是不是成功他妈。

现在的大学生太没素质了!

过来拷毛片,居然用剪切!

有空学风水去,死后占个好墓也算弥补了生前买不起好房的遗憾。

PerlCGI入门2008年02月03日星期日09:

02.1Unix环境

 

本教程将与您一起学习在Unix平台上用Perl创建CGI。

和其它教程不同,我们并不假设

你了解CGI、Perl或Unix。

学完本教程后,你将能够建立Perl的计数器、留言板和处理安全口令的程序。

同时你也

会对Perl语言有所了解,学习使用其变量、if语句和循环。

什么是CGI?

CGI代表通用网关接口(CommonGatewayInterface)。

本质上,CGI是运行在服务器上

的程序。

它可以用任何语言编写

-只要能够在你的服务器上运行。

Perl之所以能够成为CGI编程的首选,是因为它可以

适应所有的平台,而且拥有很多对Web来说非常理想的工具。

当我在一个网页上填充一个form并按‘Submit‘时,有2件事在服务器上发生:

敲入或选择的所有信息被拷贝到服务器。

服务器寻找在form顶部确定的程序,然后运行之。

程序做的第一件事通常是请求网页form中的内容,然后把它赋给变量。

然后程序可以查

询数据库、发送一封电子邮件或加入留言板、或者任何你想做的事。

我们通过例子学习教程。

对每个新的主题,我们查看整段代码,然后分成小片段并进行

讨论。

在你在Unix服务器上使用Perl之前,应该对Unix有一些了解。

Unix环境

你应该会用Telnet登录到Unix服务器上以便能用Perl创建CGI。

你也应该能把文档FTP到服务器上。

实际上,Unix是一种最强大和灵活的操作系统。

当作为终端使用时,用户用一种称为

X-Windows的图形用户界面。

X-Windows因为在互联网上太慢而无法使用,所以我们将使

用命令行方式。

命令行提示

每次在Unix中输入新的一行,将得到一个命令行提示。

通常以机器名然后跟着一个%或#

字符的形式出现。

这是输入基本命令来创建、拷贝、移动和删除文件的地方,还可以做

其它事情。

试试这些联系:

打开你最喜欢的Mac或PC字处理器。

对于HTML来说,用一种简单的能把代码存成纯文本

的编辑器。

敲入这行:

This

isadummysentenc.

把文件保存为practice.txt。

用FTP程序把这个文件上载到服务器上。

注意:

应该以ASCII的方式上载你的CGI文件,

不能用binary方式。

用TELNET程序访问你的Web服务器。

用你的用户名和口令LOGIN。

敲入ls然后按回车键(注意:

使用小写,Unix区分大小写),你的Web服务器中的内容

将列在屏幕上,应该能够看到你的practice.txt。

敲入pwd然后按回车。

pwd代表“打印工作目录(Print

WorkingDirectory)”。

从服务器的ROOT目录到你的当前目录的路径将显示出来。

如,我的主目录是/home/usr/robyoung/htdocs。

敲入mkdirmyfolder然后按回车-创建一个叫‘myfolder‘的目录。

敲入mvpractice.txtmyfolder/practice.txt然后按回车-把practice.txt移动到

myfolder中。

敲入cdmyfolder然后按回车-进入myfolder目录。

敲入pwd然后按回车-路径名以/myfolder结束。

敲入ls然后按回车-myfolder中的内容将显示出来-

只有practice.txt。

敲入cppractice.txtcopy2.txt然后按回车-

做一个拷贝。

敲入ls然后按回车-将列出两个文件。

敲入rmcopy2.txt然后按回车-删除这个文件。

敲入ls然后按回车-只剩下practice.txt。

 

1.2chmod命令

创建CGI程序时,需要改变其访问权限以便能从网页中执行之。

我们用chmod命令实现这

个目的。

chmod命令有两个参数

-谁拥有权限和他们将拥有哪些权限。

1.谁拥有权限?

有三类不同的权限:

User、Group和Others-用字母u、g和o表示。

字母‘a‘表示所有类

别。

2.可以拥有什么权限?

有3种类型的权限:

Read、Write和eXecute,用字母r、w和x表示。

权限通过等号赋予(=r、或=rw、或=rx),或者通过加号(+r或+rwx)或减号(-w或

-rwx)。

3.如何敲入命令?

对于大多数CGI程序,我想让所有人都有读和执行的权限,但没有写的权限,因此没有

人可以删除或编辑我的程序。

下面是最常见的命令:

chmoda+rxfilename.cgi

表示让所有人有读和执行的权限。

当我创建一个文件时,我拥有完全的读、写和执行权

限,但其他人没有任何权限。

这个命令让所有人可以运行我的程序。

在myfolder文件夹中试试这个例子:

入ls-l然后按回车。

显示出关于practice.txt的很多信息,包括大小、拥有者和最后

保存的日期。

观察访问权限,可能是这样:

rwx------或rw-r--r--或rw-r-----,前3个指明user权限

(读、写、执行)。

然后的三个是group权限(无),最后的三个为other权限(无)。

敲入chmoda+rxpractice.txt然后按回车-

为所有类别增加读和执行权限。

敲入ls-l然后按回车-这时显示的权限为rwxr-xr-x,指明拥有者仍然拥有所有权限,

group和others有读和执行权限,但没有写的权限。

敲入chmodgo-xpractice.txt然后按回车。

敲入ls-l然后回车-现在的权限为rwxr--r--,指明拥有者仍有完全的权限,group和

others只有读的权限。

删除myfolder文件夹

敲入rmpractice.txt然后按回车。

敲入cd..

敲入rmdirmyfolder

 

1.3定位Perl和sendmail

定位Perl程序

每个Perl程序指明Perl在系统中的位置。

于是外部的网页可以知道执行什么程序和去哪

找它。

从命令行提示符敲入whichperl然后按回车。

系统返回类似这样的结果:

/usr/bin/perl

/usr/local/bin/perl

记下这个结果,这是你的系统中Perl的位置,以后会用到。

如果系统没有返回结果,再试试:

敲入whereisperl然后回车。

如果还没有得到Perl的路径,需要给你的系统管理员发一封EMAIL。

定位sendmail程序

敲入whereissendmail,然后按回车。

会返回几个结果,其中一个以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给你的系统管理员,询

问正确的路径。

 

2.1使用Emacs

当我已经有一个很好的PC上的图形界面的面向鼠标的编辑器时,为什么我还想要一个基

于文本的编辑器呢?

答案是Emacs运行在你的Unix平台上,所以可以方便地做小的修改。

基本上当你维护你在Unix平台上的工作时,你有两个选择:

1.在PC上使用图形界面的文本编辑器,然后FTP你的文件到Unix服务器上。

当你做修改

时,保存你的修改,然后再FTP上去。

这种方式的好处是你可以在一个舒适的、面向鼠

标的编辑器中做所有的工作。

缺点是每次上传文件都要花费时间。

2.用一种Unix编辑器,如Emacs,直接保存你的修改到服务器上。

它的界面不太漂亮,

而且不能用鼠标,但一旦你用惯了,就能做任何事。

我宁愿在做小的修改时使用Emacs,

而不愿每次上传文件。

开始Emacs教程:

敲入emacs然后按回车。

屏幕将显示emacs编辑器环境。

如果你的服务器显示“Emacs

notfound”,那么你应该给你的系统管理员发一封Email,问问是否有可用的文本编辑

器并且是否有在线教程。

敲入[ctrl]-h然后按t。

这时将调出教程。

可能要花几个小时学习Emacs教程。

你对

Emacs越了解,编辑Perl越容易。

要点:

保存文件-敲入[ctrl]-x然后按[ctrl]-s。

退出-敲入[ctrl]-x然后按[ctrl]-c。

打开文件-emacsfilename。

 

2.2Perl简介

 

2.2Perl简介

准备模板

在你的PC或Mac上建立一个文件夹-perltour。

点击这里下载模板文件-

template.txt。

把它保存到perltour文件夹中。

在你最喜欢的文本编辑器中打开这个文件。

把第一行替换为你已经定位的Perl路径。

对于Windows

NT用户:

删除这行。

你的机器使用.pl文件扩展名开定位Perl,所以要保证你的文件的

扩展名为.pl而不是.cgi。

找到文档的倒数第八行-open(MAIL,

"|/usr/lib/sendmail-t")||die

把/usr/lib/sendmail替换为你已经定位的sendmail路径。

找到下一行-"Content-type:

text/text\n\nCan‘topen

/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然后找到#************BEGINBODY*********

在这行后面加入一行:

print"

Hello

World

";

保存文件。

如果不需要把脚本放在cgi-bin目录中......

用Telnet程序登录到你的Unix服务器上。

在Unix命令提示符下,敲入mkdirperltour然后按回车。

敲入chmoda+rxperltour然后按回车。

把test1.cgi文件FTP到perltour文件夹中。

注意:

应该以ASCII方式上传你的CGI文件,

不能用binary方式。

敲入chmoda+rxtest1.cgi然后按回车。

敲入ls-l然后按回车。

这时你可以看到test1.cgi的权限:

rwxr-xr-x,表明任何人都

可以读和执行这个文件。

运行浏览器,输入你的主目录URL,把/perltour/test1.cgi加在URL后面。

如果需要把脚本放在cgi-bin文件夹中......

用Telnet登录到你的Unix服务器上。

向系统管理员询问cgi-bin的路径。

在Unix命令提示符下,敲入cdcgi-bin路径,然后按回车。

把test1.cgi文件FTP到服务器的cgi-bin文件夹中。

注意:

应该以ASCII方式上传你的

CGI文件,不能用binary方式。

敲入chmoda+rxtest1.cgi然后按回车。

敲入ls-l然后按回车。

这时你可以看到test1.cgi的权限:

rwxr-xr-x,表明任何人都

可以读和执行这个文件。

运行浏览器,输入你的服务器的URL,把/cgi-bin/test1.cgi加在URL后面。

例如,

HelloWorld将以大字母出现,表明CGI正常工作。

 

2.3HTMLFORM

 

2.3HTMLFORM

这页很简单-

建立一个用户可以输入信息的基本的form。

form顶部的标记符有两个参数:

ACTION="path/to/myscript.cgi"和METHOD="post"。

把这个文件保存在perltour文件夹中,用文件名"test2.cgi"。

把下面代码拷贝到文件testform.htm中,然后把它FTP到perltour文件夹中。

Myfirstform

METHOD="POST">

FirstName

SIZE=25>

LastName

E-mail

当用户点击form底部的submit按钮时,服务器将执行程序"test2.cgi"并把

用户输入的信息传递给程序。

Method可以是POST或GET。

注意:

如果你的服务器使用cgi-bin文件夹,你的HTML文件中的form中的script名前应

加上/cgi-bin/。

例如,

METHOD="POST">

 

3.1回应脚本

 

3.1回应脚本

这段脚本将显示输入到HTMLFORM中的文本。

它是一个信息如何传递给你的程序的简单

的例子。

既然你现在已经有了一个有着正确的Perl和Senmail的路径的template.txt文

件,下面要做的只是编辑CGI的BODY部分。

拷贝下面脚本的BODY部分到template.txt,然后保存到一个新文件

"test2.cgi"中。

FTPtest2.cgi到perltour文件夹(或cgi-bin)中。

然后在Unix提示符下,进入perltour(或cgi-bin)文件夹,敲入chmod

a+rxtest2.cgi设置权限。

现在可以在你的浏览器中打开服务器上的testform.htm,测试这个form。

当你填充这个

form并按"Test

It"时,CGI告诉你你输入了什么。

#!

/usr/local/bin/perl

#

&readparse;

print"Content-type:

text/html\n\n";

#

#*****************BEGINBODY*************

print"

Thankyouforfillingoutthe

form

";

$firstname=$value[0];

$lastname=$value[1];

$email=$value[2];

 

print"Yourfirstnameis$firstname
";

print"Yourlastnameis$lastname
";

print"Youre-mailis$email
";

 

#***************ENDBODY******************

 

3.2脚本解释

 

3.2脚本解释

现在让我们看看这段代码。

#!

/usr/local/bin/perl

#

&readparse;

print"Content-type:

text/html\n\n";

#*****************BEGINBODY*************

Unix上的每个CGI的第一行都是运行它的程序的路径。

记住,你的可能与上面写的不同。

服务器将按这个路径定位Perl,然后用Perl解释器执行程序。

这是唯一的有#并且对程

序有意义的一行。

程序其余部分的#只是注释,程序将忽略其后的内容。

第三行是一个命令,&readparse;。

这是一个子过程,输入所有进入HTML

FORM中的文本。

第四行对所有CGI都是必须的,它告诉服务器我们要打印的任何信息都

应该返回HTML文档。

这些行永远不会改变,因此下面我们集中在BODY部分的内容上。

 

3.3BODY部分

 

3.3BODY部分

#*****************BEGINBODY*************

print"

Thankyouforfillingoutthe

form

";

$firstname=$value[0];

$lastname=$value[1];

$email=$value[2];

 

print"Yourfirstnameis$firstname
";

print"Yourlastnameis$lastname
";

print"Youre-mailis$email
";

 

#***************ENDBODY******************

对于Perl,我们需要知道:

每行以分号结束。

变量以$开始。

第一行很直接-print将打印随后的内容到屏幕上。

要打印的内容必须在引号内,其中

可以包含HTML标记符。

readparse子过程自动把HTMLFORM中的内容放入一个称为value的数组中。

这样,第一

个文本框中的内容是$value[0],第二个文本框中的内容是$value[1],等等

-数组下标以0开始。

第二行我们执行命令:

$firstname=$value[0];

这个语句创建一个称为$firstname的新变量,把$value[0]的内容赋给它。

这意味着在

HTML

FORM中第一个文本框中输入的信息将包含在变量$firstname中。

第三行和第四行与此类似:

$lastname=$value[1];$email=$value[2];

很明显,这两行分别把第二个和第三个文本框中的内容赋给变量$lastname和$email。

程序的最后三行把文本和变量打印到屏幕上。

print"Yourfirstnameis

$firstname
";

print"Yourlastnameis$lastname
";

print"Youre-mailis$email
";

注意变量被包含在双引号中。

在其它语言,如JavaScript中,我们必须显式的连接文本

和变量。

在Perl中,当它看到$时,就会使用变量的内容。

不错,是吧?

但是要注意,

只有双引号才能这样,单引号只是从字面上引用其中的内容。

 

4.1email子过程

 

4.1email子过程

#*****************BEGINBODY*************

print"

Thankyouforfillingoutthe

form

";

$firstname=$value[0];

$lastname=$value[1];

$email=$value[2];

 

print"Yourfirstnameis$firstname
";

print"Yourlastnameis$lastname
";

print"Youre-mailis$email
";

$to=$email;

$from="clinton\@whouse.gov";

$sub="subjectofmyfirste-mail";

$body="Theformwasfilledoutby$firstname$lastname

Thankyougoesonanotherline.";

&email($to,$from,$sub,$body);

 

#***************ENDBODY******************

在上面的例子中,我在程序的BODY后面增加了7行。

你需要拷贝这些行到test2.cgi的

BODY中。

有两种方式:

在PC上的文本编辑器中进行拷贝和粘贴,然后用FTP重新上传,这时不必重新运行chmod。

可以在Unix提示符下运行Emacs或Pico,对文件进行修改,然后保存和退出。

这时你可以再试试form。

要在testform.htm页面中输入你自己的邮件地址。

当你提交这

个form时,显示结果与以前一样。

但如果你在几秒种后查看你的e-mail,你会看到一封

来自President

Clinton的消息。

让我们看看这些行:

$to=$email;

-拷贝变量$email中的内容到变量$to中。

$from="clinton\@whouse.gov";

-设置变量$form为clinton@whouse.gov。

反斜线(\)称为escape

character。

@符号在Perl中有特殊意义,表示一个数组,这时,如果我们不想引用数组,

而只用@符号本身,需要在前面加一个"\"。

例如,如果我敲入下面这行:

$amount="Heowesme$20.00";

将得到一个错误,因为Perl将试图访问一个称为$20.00的变量。

我们可以这样写:

$amount="Heowesme\$20.00";

$sub="subjectofmyfirste-mail";

这行很直接。

$body="Theformwasfilledoutby$firstname

$lastnameThankyougoesonanotherline.";

这只是一个命令-Perl命令总以分号结束。

返回的字符是赋给$body的字符串中的另一

个字符。

这很方便,因为可以敲入引号,然后象在字处理器中一样敲入多行文本,然后

用引号结束。

最后,象其它语句一样敲入引号。

也可以象这样而得到相同的结果:

$body="Theformwasfilledoutby$firstname

$lastname\nThankyougoesonanotherline.";

\n为换行符-当双引号中包含\n时,把它翻

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

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

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