首页 > 课堂 > 技术开发 > 正文

编写PERL程序的一点经验

2023-06-23 14:40:23
字体:
来源:转载
供稿:网友

这是本人在编写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;

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表