Open :
Perl 中可以用 Open 或 者 sysopen 函数打开文件进行操作,这两个函数都需要通过文件句柄(即文件指 针)来对文件进行读写定位等操作。
$FH 为文件句柄
Open($FH ,"c:/bugzilla/data_developer.png")||die "open failed!";# 前提文件必须已 经存在,否则会返回0 ,出错信息在$! 中。
Open($FH ,">c:/bugzilla/data_developer.png")||die "open failed!";# 如果文件不存 在,创建之;如果存在,内容被清空,长度截至为0.
Open($FH ,">>c:/bugzilla/data_developer.png")||die "open failed!";# 文 件中的内容不会被清空,新的内容会追加到原文后面
Open($FH ,"+<c:/bugzilla/data_developer.png");# 如果文件不存在,则创建;如果文件已经存在,原来的数据不会被 清除;此种方式既可以读文件,又可以写文件。可以通过tell ()函数在文件内部移动,通过seek ()函数进行定位。
use
use 功能类似于C 中include 功能
例如:use GD::Graph::pie;
my
perl 中可以通过关键字my 来 定义自己的变量
例如:my $i=0;# 定义1 个变量 my @a ; 定义数组
print
语法: print Filehandle LIST
说明:这个 Filehandle 可以看作在 I(INPUT)/O(OUTPUT) 之间的一个桥梁 , 可以利 用 FILEHANDLE 来做出数据读入写 出的动作 .STDIN 是代表从哪连输入数据 , 例如从电脑的键盘输入 ;STDOUT 是代表从哪连输出数据 ; 例如从电脑的屏 幕输出 ;STDERR 是代表从哪连输出错误的数据 , 例如从电脑的屏幕输出 . 而在 PERL 语 言中有三个标准 FILEHANDLE : 1.STDIN( 标准输入 ) :是代 表 STDIN 的 FILEHANDLE
2.STDOUT( 标准输出 ) :是代 表 STDOUT 的 FILEHANDLE
3.STDERR( 标准错误输出 ) :是代 表 STDERR 的 FILEHANDLE 如果要使用其他 FILEHANDLE 的时候 , 就要用 OPEN 这个函数来打开一个 FILEHANDLE, 我们可以用 PRINT 这个函数 LIST 的 数据输出给 FILEHANDLE.
在为大家介绍 PRINT 这个函数之前 , 先让我 们来看看 PRINT 函数中特殊打印 字符 :
符号 其 作用
/n 换行 new line
/r 光标换行 return
/t tab 键
/f 换页 form feed
/b 退回一格
/v 垂直 tab 键
/a 响铃 Bell
/e escape 键
/007 十进制 ASC II 码
/xff 十六进制码
/c[ 控制 字符
示例: print STDOUT " 网上学园 /n"; 将 " 网上学 园 " 加上换行显示在屏幕上 .
语法: print LIST
说明: 如果省略 Filehandle 的话 , 就会把 Filehandle 内定为 STDOUT. 也就是会将 LIST 的数据内容显示在屏幕上 .
示例: $url="www.netease.net/~zmd";
print " 网上学园 $url/n";
在屏幕上将会出现 " 网上学园 www.netease.net/~zmd", 如果想要让双引号内的变量失效 , 可以在变量的前面加上 "/" 符 号 . 例如: print" 网上学园 /$url"; 这样它就显示: " 网上学园 $url"
语法: print
说明: 同省略 Filehandle 和 LIST 的话 , 就会以 STDOUT 为 Filehandle, 并会输出 $_ 这个内定输出变量的数据内容 . 如果 $_ 变量 是一个空 字符 串的话 , 就会显 示出一个空 字符 串 .
示 例: $_=" 网上学园 /n"; print; 就会将 " 网上学 园 " 加上换行显示在屏幕上
--------------------------------------------------------------------------------
指令: printf
语法: printf Filehandle LIST
说明: 在 perl 语 言中也提代 C 语言中 printf 的语法 , 用法和 C 语言中 的用法一模一样 . 如果把 Filehandle 省略的话 , 也一 样会把 STDOUT 当成是内定的 Filehandle. 在为大家介绍 printf 函数之前 , 先让我们来看看 printf 函数中变换符号的 字符 .
符号 其作用
%c 字符
%s 字符 串
%d 整数
%f 浮整数
%h 十六进制码
%o 八进制码
示例: printf("chomod%d%s/n","711""cgi"); 会将 chmod 711 cgi 加上换行显示于屏幕上。
指令: chop 语法: chop($url)
说明:把最后一个 字符 删除。
示例: $url="www.nease.net/~zmd/";
chop($url); 这时 $url="www.nease.net/~zmd" 而这两行也可以写成 chop($url="www.nease.net/~zmd/");
--------------------------------------------------------------------------------
指令: split
语法: split(/pattern/,$text,limit) 其中 /pattern/ 是文字处理的模式,而 limit 是代表要分割的个数,一般可以省略。
说明:用一个指定的文字处理模式来分割 $text 字符 串。
示例:
$text="Michael,Gevin,Mike"; @name=split(/,/,$text); # 这时 @name=("Michael","Gevin","Mike");
($a,$b,$c)=split(/,/,$text); # 这时 $a="Michael";$b="Gevin";$c="Mike";
@name=split(/,/,$string,2); # 这时 @name=("Michael","Gevin");
在传送 CGI 应用 程序 数据的时候会先将数据编码,其中会将 FORM 中第个数据字段 的数据内容用 & 这个符号隔开,所以在解码的时候就要以 & 这个符号为分割的 字符 ,将每个数据字段分割出。例如: $text="Mike=A&Michael=B";
@name=split(/&/,$text); # 这时 @name=("Mike=A","Michael=B"); 而数据字段的名称和这个数据字段的值是用 = 这个符号来隔开,如果想取得数据 字段的名称和所对应的值的话,就用要 = 这个符号来分割数据字段,例如: $name=""Mike=Michael"" ;
($name1,$name2)=split(/=/,$list); # 这时 $name1="Mike";$name2="Michael";
--------------------------------------------------------------------------------
指令: keys
语法: keys(%array)
说明:取出关联数组 %ARRAY 中全部的 key 。
示例: %NAME=(1,"mike",2,"michael"); @readkey=keys(%NAMES); # 这时 @readkey=(1,2);
--------------------------------------------------------------------------------
指令: values
语法: values(%array)
说明:取出关联数组 %ARRAY 中全部的 value 。
示例: %NAMES=(1,"mike",2,"michael"); @readval=values(%NAMES); # 这 时 @readval=("mike","michael");
--------------------------------------------------------------------------------
指令: reverse
语法: reverse(@array)
说明:将数组 @array 中的元素由后到前重新排列。
示例: @back=("A","B","C","D","E"); @back=reverse(@back); # 这时 @back=("E","D","C","B","A");
--------------------------------------------------------------------------------
指令: sort
语法: sort(@array)
说明:将数组中的元素由小到大排序,如果要由大到小排序的话,要加上 reverse 这个函数。
示例:
@abc=("d","b","c","a"); @abc=sort(@abc); # 这时 @abc=("a","b","c","d");
@abc=(reverse sort@abc); # 这时 @abc=("d","c","b","a"); 这个语法也可以写成 @abc=(reverse sort(@abc));
@number=(5,2,10); @number=sort(@number); 上面示例用 sort 函数来排序数值的时,会出差错,因此要用下面到下面这一句。 @number=(sort{$a<=>$b}@number); # 这时 @number=(2,5,10);
--------------------------------------------------------------------------------
指令: length
语法: length($string)
说明:求出 字符 串 $string 的字节 (bytes) 值。
示例: $string="Perl5"; $size=length($string); # 这时 $size=5;
--------------------------------------------------------------------------------
指令: substr
语法: substr($string,offset,length) offset 代表起始 字符 的位置 ,length 代表引用的 字符 串长度,如果省略 length 则代表从起始值到 字符 串的最后一个 字符 长度。而 offset 如果是负值的话,就会从 字符 串右边开始指定 字符 。
示例:
$s=substr("perl5",2,2); # 这时 $s="rl";
$s=substr("perl5",2); # 这时 $s="rl5";
$s=substr("perl5",-2,2); # 这时 $s="er";
--------------------------------------------------------------------------------
指令: index
语法: index($string,$substring,position) $substring 是要寻找的 字符 ; position 代表从哪一个位置开始寻找,假如省略 position 就从头开始找起。
说明:返回所要找寻的 字符 在一 字符 串 $string 中的位置,如果在 字符 串中找不到 字符 的话,则会返回 -1 这个 值。
示例:
$s=index("perl5","p"); # 这时 $s=0
$s=index("perl5","l",2); # 这时 $s=3
$s=index("perl5","perl"); # 这时 $s=-1
--------------------------------------------------------------------------------
指令: push
语法: push(@array,$string)
说明:在数组 @array 的最后附加新的元素 ($string) 到数组 @array 中。
示例: @array=("one","two"); push(@array,"three"); # 这时 $@array=("one","two","three")
--------------------------------------------------------------------------------
指令: pop
语法: pop(@array)
说明:将数组 (@array) 的最后一个元素删除,并将删除的元素返回。
示例: @array=("one","two"); $rm=pop(@array); # 这时 @array=("one"); 而 $rm="two";
--------------------------------------------------------------------------------
指令: unshift
语法: unshift(@array,$string) 说明:在数组 @array 的第一个元素前附加新的元素 $string 到数组 @array 中。 示例: @array=("one","two"); unshift(@array,"three"); # 这时 @array=("three","one","two")
--------------------------------------------------------------------------------
指令: shift
语法: shift(@array)
说明:将数组 @array 的第一个元素删除,并将删除的元素返回。
示例: @array=("one","two"); @rm=shift(@array); # 这时 @array=("two"); 而 $rm="one";
--------------------------------------------------------------------------------
指令: join
语法: join($string,@array)
说明:在一数组 @array 的元素之间加上一指定的 字符 $string, 并将结果返回。
示例:
@array=("one","two","three");
$total=join(" : ",@array); 这时 $total="one : two : three";
--------------------------------------------------------------------------------
指令: grep
语法: grep(/pattern/,@array)
说明:将合文字处理模式 (regular expression) 的数组元素找出来。
示例:
@array=("one","on","in");
$count=grep(/on/,@array); # 这时 $count=2
@result=grep(/on/,@array);# 这时 @result=("one","on");
--------------------------------------------------------------------------------
指令: hex
语法: hex($string)
说明:将十六进制的数值转成十进制。
示例: $decimal=hex("ff"); 这时 $decimal=255;
--------------------------------------------------------------------------------
指令: rand
语法: rand($interger)
说明:常和函数 srand 搭配来取得一随机数,如果没有先宣告 stand 函数的话,则取出的常数值是一个固定值。这个语法会返回一个介于 0 和 $interger 之间的数值,如果 $interger 省略的话,则会返回一个介于 0 和 1 的数值。
示例:
srand; # 要先宣告 srand 函数,才能产生随机数的效果
$int=rand(10); #$int 的值会大于 0 而且小于 10 如果希望产生的乱数是整数的话,就要再加上 int # 这个函数
$int=int(rand(10)); #$int 的值是一个整数,且值在 0 和 9 之间
--------------------------------------------------------------------------------
指令: localtime
语法: localtime(time)
说明:可返回九个有关时间的元素,在写 CGI 应用 程序 的时候常会用到 系统 的时间,所以在此会详细介绍这个函 数的用法。
示例:
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
其中: $sec 代表秒数 [0,59] $min 代表分数 [0,59] $hour 代表小时数 [0,23] $mday 代表是在这个月的第几天 [1,31] $mon 代表月数 [0,11], 要将 $mon 加 1 之后,才能符合实际情况。 $year 从 1990 年算起的年数 $wday 从星期六算起,代表是在这周中的第几天 [0-6] $yday 从一月一日算起,代表是在这年中的第几天 [0,365] $isdst 只是一个 flag 知道这些变量之后,就可以在 CGI 应用 程序 中拿来应用了。此外,也可以用下面这一行指令在 UNIX 系统 下取得 系统 的时间。为了避免错误发生,最好用绝对路径的方法来取得 系统 时间,如果绝对路径不清楚的话可以用 "which data" 这个指令来得知。最后要提 字符 的话,就不能正确执行 系统 的 程序 了。 $data='/usr/bin/data'; 而在 perl5 版本中,也可以用下面这一行指令来取得 系统 时间。 $data=localtime(time);
--------------------------------------------------------------------------------
指令: die
语法: die LIST
说明:会把 LIST 字符 串显示出来,并退出 程序 。常常和 $! 这个代表错误信息变量一起使用。
示例: open(FILE,"$filename")||die " 不能打开 文件 $!/n; 如果打开 文件 失败的话,就会显示出错误的信息,之后再退出 程序 。
数组的最后一个 index:$#
例如: @component ,则此数据的长度为 $#+1, 数组的最后一个数据为 @component[$#]