欢迎光临
我们一直在努力

PerlScript编写ASP(转载)-CGI教程,CGI文档

建站超值云服务器,限时71元/月

perlscript编写asp

nighthawk注:
尽管这些年来perl为广大编程爱好者所熟悉,但却对perl存在一个令人尴尬的误解,以为perl就是cgi,经常有人问我perl和cgi,和php,和asp比较如何如何,这是实在是件很遗憾的事情.这里特地贴出下面这篇文摘,也许能减少一些这方面的 误解.

本文将进一步讲述perl在可嵌入技术的广域性,和perlscript 在脚本技术领域的功用。以前的文章我说了eperl、embed perl和mod_perl 技术,它们都是单独领域的技术,是在本身基础上的延伸。而本文将讲述如何用perlscript写asp,或者是说在asp中写perlscript。

学习本文后,你将会知道perl是如何强大,它的兼容性是没有任何语言可以比的。在目前web页编程中,最为盛行的技术:cgi、asp、php、jsp等,其中cgi就包含了perl、c/c++、java等技术,在cgi 技术中流行的语言就是perl,perl的历史悠久,有着传统的编程方式和自然编写方法,在asp、php、jsp等技术没有出现之前,是web也编程中最为流行或者说是标准的编程技术。经常有人拿perl或是cgi与asp、php、jsp等技术相比,我在这里想重申一次,perl、cgi与asp、php、jsp不是一个领域一个类别,就好比水果和红薯他们如何比?这些配比方法在小学中就讲述得很详细了,所以希望广大程序技术人员不要被误导。perl是一个语言,它与c/c++、java、basic等是一个类别的一个领域的,而asp(active server page)、php(personal home page)、jsp(java server page),大家可以从英文中看出他们后面都有page,简单的你可以理解成为超文本语言html的服务器端语言,而真正输出的html是客户端语言。我编写cgi,特别是用perl编写了几年的程序,写了无数的商业软件,然而现在很多舆论对perl和cgi评价非常不好,然而这些都是非常不负责任的评价,对这个行业带来了很大的损失,严重减慢了perl在国内发展的速度。而perlscript 是perl语言中的脚本语言,并非perl脚本,也就是说它我们常说的perl是不同的,它是perl的一个脚本语言。类似于vb,大家知道vb有vbscript,perlscript 就好像vbscript,也可以说是vbscript同类,理解这一点就好理解以下的内容。大家知道vbscript分为客户端、服务器端,客户端可以在浏览器(诸如:internet explorer、netscape)中应用,很多网站就用vbscript 做一些客户端的分析处理工作;服务器端就是大家经常在asp里面写的vbscript一样"<%@ language="vbscript" %>"。perlscript 是perl的一个子集,perl->perlscript。

perlscript 在实际应用中有很多地方与平时写的perl程序是不一样的,比如我们一般显示输出信息都用"print info\n\n;",而在使用perlscript的时候就不能使用这样的语法,否则将会造成语法无法识别;perlscript 在默写方面使用的是面向对象技术为基础。所以如果想输出信息,必须采取对象方法:"$response->write("info");"。

如何在动态服务页中(asp)应用perlscript 作为编写脚本呢?平时我们写asp的时候都需要声明语言类型,例如我们用vbscript编写asp时候,必须胜名"<%@ language="vbscript" %>",在使用perlscript 的时候也是一样,声明格式是一样的"<%@ language=perlscript %>"。现在我们就可以开始写perlscript 的asp了。是不是有些兴奋?我们按照惯例,都要写一个"hello world"脚本啦。其实asp可以不用写的什么脚本的,可以在html直接打出,然而现在这里是为了能够让您更容易的了解perlscript在asp的具体应用。现在我们建立第一个asp页
<%@language=perlscript%>
<html>
<title> perlscript test </title>
<%
for($i=0; $i<=10; $i+=2) {
$response->write("");
$response->write("hello world!
");
}
%>
</html>
在这里大家一定要注意
"$response->write("");"为什么不用print呢?因为print 是对程序而言,是直接的,而asp是间接的输出。在asp里面使用perlscript是自动应用了asp相关模块(use asp;)。这个页内容是进行循环依次输出字的大小。

访问得到服务器的变量,也不是以前那么样子了,命令是
"<%= $request->servervariables(server_software)->item() %> "

我们一般在perl里面则是
"$env{server_software};"
得到post或者get数据,比以往在perl程序中容易很多。
post:"$request->form(name)->item()"
而get: "request->querystring(name)->item()"

在输出非"text/html"类型数据的时候,首先要使用模块:"win32::ole::variant;",比如输出"image/gif"perl程序方法是:
print "content-type:image/gif\n\n";
而在perlscript中用:
$response->{contenttype} = "image/gif";

输出数据方法则是:
$response->binarywrite(win32::ole->variant(vt_ui1, $image));
取得asp的错误信息:
"$asperror = $server->getlasterror();"
设置浏览器cookies:"
$response->cookies->setproperty(
类别,
cookies,
这是一个cookies
);
"
设置允许url:"
$response->cookies(cookie)->{domain} = tanshuai.net;
"
设置过期时间:"
$response->cookies(somecookie)->{expires} = january 1, 2001;
"
数据库连接:"
<%
#建立连接adobd的对象
#
$conn = $server->createobject("adodb.connection");

#打开系统 dsn
#
$conn->open( "tanshuai" );

# 执行 sql 查询
#
$rs = $conn->execute( "select * from orders" );

#取得目标查询队列数
$count = $rs->fields->{count};

# 输出显示每个队列名
#
for ( $i = 0; $i < $count; $i++ ) {
$response->write( $rs->fields($i)->name );
$response->write("
");
};

# 输出所有队列值
#
while ( ! $rs->{eof} ) {
for ( $i = 0; $i < $count; $i++ ) {
$response->write(" ");
$response->write($rs->fields($i)->{value});
$response->write("
");
};

#移动到下一个纪录
#
$rs->movenext();
};

# 关闭所有对象
#
$rs->close();
$conn->close();
%>

在perlscript中sub、if、else、else if、for each、while、声明变量、打开文件、字符处理都、调用模块文件都是按照以前的样子。只是在对于web服务器间的特殊处理,需要使用特殊方法。

另外#在脚本编写的时候仍然是作为注解符号,而且一定要记得每个脚本命令结束后必须要填写";"结束符号。

通过本文您已经掌握了如何用perl的perl脚本(perlscript)编写asp了。perl的强大功用和广泛的兼容性,是没有任何一个技术可比的。目前perl可嵌入技术包含:c嵌入perl、java 嵌入perl、asp嵌入perl、apache嵌入 perl、wsh嵌入perl、wsc 嵌入perl……

perl其实是一个简单易学的通用信息技术语言,我觉得现在普及计算机,首先应该普及的就是perl语言了,perl比basic自然得多。好像人们在说话,它的编写方式就好像我们处理事务一样。学会了perl,不但对你学习其它语言(诸如:c/c++、java)有很大的促进、帮助并加快学习进度,perl的强大发展趋势,可以让您"投机取巧",在其它流行的编程技术中嵌入,这样在您不懂得或是觉得一种算法很麻烦的时候,用perl来帮助你快捷的完成。让您在其它语言中从perl慢慢进化成该种语言,是相当顺利的平稳过渡。我发现在学习perl以后,学习其它语言速度有很大的加快。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » PerlScript编写ASP(转载)-CGI教程,CGI文档
分享到: 更多 (0)