发信人: tanshuai() 
整理人: workingnow(2002-10-30 13:55:40), 站内信件
 | 
 
 
Perl 语言初学入道之二(上)
                                             PERL 语言初学入道篇 
 ======================================================================  
 ===========================================================             
                               
 作者:天水 E-Mail: [email protected] Http://ts.in-china.com 
 ======================================================================  
 ============================================================ 
 上一部分你可以在Perl 精华区中找到!
 
 <二>CGI进本编写方法及部分指令解析(上)
 
 本节讲述Perl的语法命令问题。
 
 1.抄写CGI程序:
 
 一下面的计数器程序为例子,讲述CGI抄写的基本方法:
 
 #!/usr/bin/perl
 
 #Perl程序编译路径
 
 ####################################
 
 #开始是设置
 
 $counterfile = "/home/cgi-bin/counter/counter.txt"; #counter.txt的绝对 路径
 
 $imagefile{'0'}="/home/cgi-bin/counter/0.gif"; # 0.gif的绝对路径
 
 $imagefile{'1'}="/home/cgi-bin/counter/1.gif"; # 1.gif的绝对路径
 
 $imagefile{'2'}="/home/cgi-bin/counter/2.gif"; # 2.gif的绝对路径
 
 $imagefile{'3'}="/home/cgi-bin/counter/3.gif"; # 3.gif的绝对路径
 
 $imagefile{'4'}="/home/cgi-bin/counter/4.gif"; # 4.gif的绝对路径
 
 $imagefile{'5'}="/home/cgi-bin/counter/5.gif"; # 5.gif的绝对路径
 
 $imagefile{'6'}="/home/cgi-bin/counter/6.gif"; # 6.gif的绝对路径
 
 $imagefile{'7'}="/home/cgi-bin/counter/7.gif"; # 7.gif的绝对路径
 
 $imagefile{'8'}="/home/cgi-bin/counter/8.gif"; # 8.gif的绝对路径
 
 $imagefile{'9'}="/home/cgi-bin/counter/9.gif"; # 9.gif的绝对路径
 
 #设置完毕
 
 ############################
 
 $|=1;
 
 @querys = split(/&/, $ENV{'QUERY_STRING'});
 
 foreach $query (@querys) {
 
 ($name, $value) = split(/=/, $query);
 
 $FORM{$name} = $value; 
 
 }
 
 $position="$FORM{'position'}";
 
 open(NUMBER,"$counterfile");
 
 $number=<NUMBER>;
 
 close(NUMBER);
 
 $number++;
 
 if ($position==1) {
 
 open(NUMBER,">$counterfile");
 
 print NUMBER "$number";
 
 close(NUMBER);
 
 }
 
 if (($position>0) && ($position<=length($number))) {
 
 $positionnumber=substr($number,(length($number)-$position),1);
 
 }
 
 else {
 
 $positionnumber="0";
 
 }
 
 if ($imagefile{$positionnumber}) {
 
 $imagereturn=$imagefile{$positionnumber};
 
 }
 
 else {
 
 $imagereturn=$imagefile{'0'};
 
 }
 
 print "Content-type: image/gif\n\n";
 
 open(IMAGE,"<$imagereturn");#打开图像
 
 print <IMAGE>;#显示图像后
 
 close(IMAGE);#显示图像后,关闭图形.
 
 exit 0; #退出
 
  
 
 2.Perl语言的变量
 
 Perl的变量基本上有三种即纯量变量(ScaiarVariable)、数组(Array)、关联数组 (Associative array),而以下是这些变量的使用方法:
 
 
 
  一、纯量变量(Scalar Variables)的用法
   在Perl语言中变量的使用不像在C语言中还要事先宣告,在使用纯量变量的时 候要先加上$这个符号,要注意的是如果指定的纯量变量是一个字符串的话,就要加 上""这个双引号符号了。如果是一个数值的话,就不用加上""这个符号了。以下是 一些范例: 
 
 $Strl=www"; #将www这个字符串指定给$Strl这个纯量变量; 
 $str2="cgi"; #将cgi这个字符串指定给$str2这个纯量变量; 
 $str3=$strl.$str2; #.就是把两个字符串连起来,所以 $str3="wwwc20"; 
 $int=5; #将5这个数字指定给$int这个纯量变量; 
 $int=3+2; #此时$int=5; 
 $int=3*2; #此时$int=6; 
 $int=l0;$int++; #此时$int=10+l=11; 
 $int=l0,$int+=5; #此时$int=10+5=15; 
 
 
   二、数组(Arrays)的用法
   在使用数组的时候要先加上@这个符号,以下是一些范例: 
 
 @namel=("sam","good"); #将"sam","good"这两个字符串指定给数组 @name1 
 @name2=@name1; #此时的@name2=("sam","good") 
 @pame3=("tanshuai",@name1); #此时的 (name3=("tanshuai","sam","good") 
  ($one,@name4)=@name3; #此时的$one="john",而 @name4=("tom"'"mary") 
 @namel=0; #此时@name1为一个空数组 
 @int=(1,3,5,7,9); 
 $x=@int; #将一个数组指定给一纯量变量,就会返回数组元
 #素的个数,所以此时的$x=5 
 $x=$#int; #$#这个变量会返回数组最后一个元素的index 
 #所以此时$x=4 
 ($x)=@int;  #$x等于数组@int的第一个元素的值, 
 #所以此时$x=1 
 $b=$int[0];  #$b等于数组@int的第一个元素,所以$b=1  
 $C=@int[0];  #$c也是会等于数组@int的第一个元素,所以 
 #$c=1,因此要呼叫数组中的值有以上两种方法 
 $int[0]=2;  #将2这个数值指定给数组@int的第一个元素 
 #此时@int=(2,3,5,7,9); 
 $int[0,1]=[1,3];  #将1指定给数组@int的第一个元素,且将3指 
 #定给数组@int的第二个元素的,所以 
 #此时@int=(1,3,5,7,9); 
 @int[0,1]=@int[1,0];  #将数组@int的前两个元素交换 
 #此时@int=(3,1,5,7,9) 
 ($int[0],$int[1])  #也是将数组@int的前两个元素交换  
 =($int[l],$int[0]);  #此时@int=(1,3,5,7,9);  
 @data=@int[0,l];  #此时@date=(1,3);  
 $int[5]=11;  #将11这个数值指定给数组@int中第六个元素 
 #此时@int=(1,3,5,7,9,11) 
 
 
   三、关联数组(Associative arrays)的用法
   关联数组也是数组的一种,是由不同的纯量变量所组成。不过和数组不同的地 方是在关联数组中的元素是由成对的key-value所组成的,也就是每一个key都有一 个相对应的值(value),这是在Perl语言中特有的语法,所以初学者对于关联数组可 能会比较陌生一点,笔者会在这里作比较详细的说明。如果能够将关联数组的语法 应用在CGI程序设计中,就会发现关联数组是一个很好用的语法。 
   在使用关联数组的时候要先加上%这个符号,而关联数组的格式如下: 
   %ARRAY=(keyl,value1,key2,value2,key3,value3...); 
   每一个key都有一个相对应的值(value)。 
   l.在关联数组中增加、更改一对数据: 
   $ARRAY{key}=value; 
   在关联数组ARRAY中加上一对key-value,要先在关联数组名称前加上$这个符 号,而且key的名称要在{}符号之间,最后再指定key所对应的value值。如果在这个 关联数组中已经有这个key了,就会更改这个key所对应的value。 
   2.取出关联数组中key所对应的value: 
   $get=$ARRAY{key}; 
   取出在关联数组ARRAY中key所相对应的value,要先在关联数组名称前加上$这 个符号,而且key的名称要在{}符号之间,就会将key所对应的value取出来并指定给 $get这个变量。 
   3.删除一对在关联数组中的数据: 
   delete $ARRAY{key}; 
    delete是Perl所提供的函数,作用是删除关联数组中的一个key以及这个key 所对应的value。使用方法是在delete函数之后,再指定关联数组中要删除key的名 称。以下是有关关联数组用法的一些范例: 
 
 %NAMES=〈I'"one",2'"two"); 
 $one=$NAMES{1}; #此时$one等于"one" 
 $two=$NAMES{2}; #此时$two等于"two" 
 $NAMES{3}="third"; #增加一对key-value到关联数组NAMES中 
 #此时%NAMES=(1'"one",2'"two",3'"third"); 
 $NAMES{3}="three"; #因为在关联数组中已经有3这个key了,所以就 
 #会把key为3所对应的value更改成"three" 
 #此时%NAMES=(1'"one仰,2'"two",3'"three"); 
 delete$NAMES{3}; #将关联数组中key值为3的一对key-value删除掉, 
 #此时%NAMES=(1'"one",2'"two"), 
 @X=%NAMES; #将关联数组NAMES指派给数组X 
 #此时@X=(1'"one",2'"two"); 
 %Y=@x; #将数组X指派给关联数组Y 
 #此时%Y=(1'"one","two"); 
 %NAMES=(); #此时%NAMES为一个空的关联数组 
 -- ※ 修改:.tanshuai 于 Jul  5 18:40:39 修改本文.[FROM: 202.96.191.124] ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.191.124]
  | 
 
 
 |