国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > 技術開發 > 正文

編寫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;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大田县| 四平市| 舒兰市| 海宁市| 建水县| 偃师市| 板桥市| 龙门县| 交口县| 浪卡子县| 诸城市| 察隅县| 沅江市| 盐池县| 隆德县| 雅安市| 重庆市| 浮山县| 济阳县| 隆尧县| 渝北区| 三都| 金湖县| 武平县| 松滋市| 吴忠市| 长武县| 宁蒗| 贡觉县| 饶阳县| 措勤县| 襄城县| 修水县| 临邑县| 句容市| 大埔区| 张家港市| 新兴县| 汶川县| 竹溪县| 霍山县|