编写PERL程序的一点经验

时间:2021-05-02

这是本人在编写PERL程序时积累的一些经验,在此抛砖引玉,希望大家能都提出宝贵意见。

一、多条件排序

一般我们在做程序时,很多时候需要多条件排序,我们只要知道其中的原理,就会知道其实多条件排序是非常容易的。

首先我们先把条件各自对应放到几个数组中,然后我们对其中一个数组进行排序,由于其他数组和这个排序的数组值是一一对应的,我们就可以列出其他的数组项了。下面举例说明:(test.cgi排序程序;test.txt 需要排序的文件)

test.cgi #!/usr/bin/perl print "Content-type:text/html\n\n"; open (FILE,"/free/hd1/cqiao/test.txt") || die "Open FileError:$!";#打开文件 @test=; close(FILE); $index=0; foreach $_ (@test) { #从文件中读取值 ($s1,$s2,$s3,$s4)=split(/\|/,$_); $s1list[$index]=$s1;#分别放入不同数组 $s2list[$index]=$s2; $s3list[$index]=$s3; $s4list[$index]=$s4; $index++; print "s1:$s1 s2:$s2 s3:$s3 s4:$s4 "; } @indexs1=sort sorts1 0..$#s1list;#按不同条件排序 @indexs2=sort sorts2 0..$#s2list; print "安s1排序 "; foreach $_ (@indexs1) { print "s1:$s1list[$_] s2:$s2list[$_] s3:$s3list[$_] s4:$s4list[$_]"; } print "安s2排序 "; foreach $_ (@indexs2) { print "s1:$s1list[$_] s2:$s2list[$_] s3:$s3list[$_] s4:$s4list[$_]"; } exit; sub sorts1 { $s1list[$a] cmp $s1list[$b]; #字符比较 } sub sorts2 { $s2list[$a]<=>$s2list[$b]; #数字比较 } test.txt cqiao|1|5|d abs|5|1|f dfk|7|5|fd hnd|4|2|d dfj|10|3|d dfj|11|5|df

同样按s3、s4排序,只要把s1、s2的排序换成s3、s4就可以

2、perl中包的应用

一般情况下,我们编写perl程序要用require调用一些常用的函数,但是这样会影响程序的速度,其实只要有些编程基础的人应该可以想到,在c++或vb中都有对象、类这个概念,而作为一个优秀的语言,perl不可能没有,那就是包概念。

举例说明: 在我编写cqbbs正式版的时候就采用了包。

1、在程序目录下建立CQBBS子目录。

2、常用的函数放在CQBBS下的common.pm文件中。

3、common.pm的头部信息:

package CQBBS;#定义包 require Exporter; @ISA = qw(Exporter); @EXPORT = qw( GetForm GetCookies SetCookies GetLongTime GetTimemessage many UbbCode spite OpenDbm ReadUser );#常用函数名

4、在应用程序bbs.cgi中定义:

package CQBBS; BEGIN { eval { ($0 =~ m,(.*)/[^/]+,) and unshift (@INC, "$1"); ($0 =~ m,(.*)\\[^\\]+,) and unshift (@INC, "$1"); }; } BEGIN { use CQBBS::common; }

这样,我们就能使用common.pm重的所有函数,而且速度一点也不影响。

使用方法: CQBBS::message;

本文源自:翔宇亭——IT乐园(http://),转载请保留此信息!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章