1.操作符 描述
lt 小于
gt 大于
eq 等于
le 小于等于
ge 大于等于
ne 不等于
cmp 比较,返回 1, 0, or -1
2.
jq字符串转数组逻辑或:$a || $b 或 $a or $b
逻辑与:$a && $b 或 $a and $b
逻辑非:! $a 或 not $a
逻辑异或:$a xor $b
3.表达式 等效表达式
$a = 1; none (basic assignment)
$a -= 1; $a = $a - 1;
$a *= 2; $a = $a * 2;
$a /= 2; $a = $a / 2;
$a %= 2; $a = $a % 2;
$a **= 2; $a = $a ** 2;
$a &= 2; $a = $a & 2;
$a |= 2; $a = $a | 2;
$a ^= 2; $a = $a ^ 2;
4.字符串联结和重复操作符
联接: .
重复:x
联接且赋值(类似+=): .=
例:
$newstring = "potato" . "head";
$newstring = "t" x 5;
$a = "be";
$a .= "witched"; # $a is now "bewitched"
5.条件操作符
与C中类似,条件?值1:值2,当条件为真时取值1,为假时取值2,如:
$result = $var == 0 ? 14 : 7;
$result = 43 + ($divisor == 0 ? 0 : $dividend / $divisor);
PERL 5中,还可以在赋值式左边使用条件操作符来选择被赋值的变量,如:
$condvar == 43 ? $var1 : $var2 = 14;
$condvar == 43 ? $var1 = 14 : $var2 = 14;
6.数组--列表的存贮
列表存贮于数组变量中,与简单变量不同,数组变量以字符"@"打头,如:
@array = (1, 2, 3);
7.$var = <STDIN>;
@array = <STDIN>; # ^D为结束输入的符号
8.数组的输出:
(1) @array = (1, 2, 3);
print (@array, "\n");
(2) @array = (1, 2, 3);
print ("@array\n");
结果为:
1 2 3
scalar()获得数组的元素个数
9.列表/数组的长度
当数组变量出现在预期简单变量出现的地方,则PERL解释器取其长度。
@array = (1, 2, 3);
$scalar = @array; # $scalar = 3,即@array的长度
($scalar) = @array; # $scalar = 1,即@array第一个元素的值
注:以数组的长度为循环次数可如下编程:
$count = 1;
while ($count <= @array) {
print ("element $count: $array[$count-1]\n");
$count++;
}
10.子数组
@array = (1, 2, 3, 4, 5);
@subarray = @array[0,1]; # @subarray = (1, 2)
@subarray2 = @array[1..3]; # @subarray2 = (2,3,4)
@array[0,1] = ("string", 46); # @array =("string",46,3,4,5) now
@array[0..3] = (11, 22, 33, 44); # @array = (11,22,33,44,5) now
@array[1,2,3] = @array[3,2,4]; # @array = (11,44,33,5,5) now
@array[0..2] = @array[3,4]; # @array = (5,5,"",5,5) now
可以用子数组形式来交换元素:
@array[1,2] = @array[2,1];
11.有关数组的库函数
(1)sort--按字符顺序排序
@array = ("this", "is", "a","test");
@array2 = sort(@array); # @array2 = ("a","is", "test", "this")
@array = (70, 100, 8);
@array = sort(@array); # @array = (100, 70, 8) now
( 2)reverse--反转数组
@array2 = reverse(@array);
@array2 = reverse sort (@array);
(3)chop--数组去尾
chop的意义
是去掉STDIN(键盘)输入字符串时最后一个字符--换行符。而如果它作用到数组上,则将数组中每一个元素都做如此处理。
@list = ("rabbit", "12345","quartz");
chop (@list); # @list = ("rabbi", "1234","quart") now
( 4)join/split--连接/拆分
join的第一个参数是连接所用的中间字符,其余则为待连接的字符数组。
$string = join(" ", "this", "is","a", "string"); # 结果为"this is a string"
@list = ("words","and");
$string = join("::", @list, "colons"); #结果为"words::and::colons"
@array = split(/::/,$string); # @array = ("words","and", "colons") now
@number=(sort{$a<=>$b}@number);
指令:substr
语法:substr($string,offset,length)
其中offset代表起始字符的位置,length代表引用的字符串长度,如省略length的话代表从起始值到字符串的最后一个字符长度。而offset如果是负值的话,就会从字符串右边开始取出指定的字符串。
说明:在一字符串$string中取出想要的字符串。
范例:
$x=substr("testing",2,2); #此时$x="st";
$x=substr("testing",2); #此时$x="sting";
$x=substr("testing",-2,2); #此时$x="in";
--------------------------------------------------------------------------------
指令:index
语法:index($string,$substring,position)
其中$substring是指要寻的字符,position代表要从哪一个位置开始起,如省略position的话就从头开始起。
说明:返回所要寻的字符在一字符串$string中的位置,如果在字符串中不到字符的话,则会返回-l这个值。
范例:
$x=index("testing","t"); #此时$x=0;
$x=index("testing","t",2); #此时$x=3;
$x=index("testing","perl"); #此时$x=-l;
屏幕打印用:
$var=<STDIN>;
命令行参数:
$var = $ARGV[0];
关联数组:HashMap
%fruit = ("apples", 9,
"bananas", 23,
"cherries", 11);
@fruitsubs = keys(%fruits);
@fruitsubs = values(%fruits);
11.如何在浏览器中显示内容?
print "Content-type: text/html\n\n";
$num=55;
print "this is number $num. <br/>";#注意在浏览器中换行用<br/>
12."+="和".="的区别
$str .= "ing";
print ("the string is $str now. </br>");
13.重复赋值
$str = "t"x5 # ttttt
$str = tx5 # tx5
$str = 5x5 # 55555
14.从标准输入(STDIN)给变量赋值
$var = <STDIN>;
@array = <STDIN>; # ^D为结束输入的符号
二。文件的操作:
12.
open(FILE1, "/u/jqpublic/file1");
open的返回值用来确定打开文件的操作是否成功,当其成功时返回非零值,失败时返回零,因此可以如下判断:
if (open(MYFILE, "myfile")) {
# here's what to do if the file opened successfully
}
当文件打开失败时结束程序:
unless (open (MYFILE, "file1")) {
die ("cannot open input file file1\n");
}
亦可用逻辑或操作符表示如下:
open (MYF
ILE, "file1") || die ("Could not open file");
close(MYFILE); 关闭文件。
语句$line = <MYFILE>;从文件中读取一行数据存储到简单变量$line中并把文件指针向后移动一行。<STDIN>为标准输入文件,通常为键盘输入,不需要打开。
语句@array = <MYFILE>;把文件的全部内容读入数组@array,文件的每一行(含回车符)为@array的一个元素。
open(OUTFILE, ">outfile");
print OUTFILE ("Here is an output line.\n");
注:STDOUT、STDERR为标准输出和标准错误文件,通常为屏幕,且不需要打开。
四、判断文件状态
1、文件测试操作符
语法为:-op expr,如:
if (-e "/path/file1") {
print STDERR ("File file1 exists.\n");
}
操作符 描述
-b 是否为块设备
-
c 是否为字符设备
-d 是否为目录
-e 是否存在
-f 是否为普通文件
-g 是否设置了setgid位
-k 是否设置了sticky位
-l 是否为符号链接
-o 是否拥有该文件
-p 是否为管道
-r 是否可读
-s 是否非空
-
t 是否表示终端
-u 是否设置了setuid位
-w 是否可写
-x 是否可执行
-z 是否为空文件
-A 距上次访问多长时间
-B 是否为二进制文件
-C 距上次访问文件的inode多长时间
-M 距上次修改多长时间
-O 是否只为“真正的用户”所拥有
-R 是否只有“真正的用户”可读
-
S 是否为socket
-T 是否为文本文件
-W 是否只有"真正的用户"可写
-X 是否只有"真正的用户"可执行
注:“真正的用户”指登录时指定的userid,与当前进程用户ID相对,命令suid可以改变有效用户ID。
问:die是干什么用的?
问:die好像也是打印的意思,但是和print有什么区别呢?
答:die是打印并退出程序。
注意其中文件句柄引用的语法为\*FILEHANDLE。
use CGI::Carp "fatalsToBrowser";
use diagnostics;
让perl带上参数-T 来提示tainted或者untainted,以避免一些隐藏的安全问题
#!/usr/bin/perl -wT
在读取文件的时候需要注意的:
@file_res = <FILE>;
print @file_res; #显示数组的个数
print "@file_res"; #显示数组的全部内容
在读写一个文件的时候,不能同时操作,要先读,后写;
在写入cookie的时候如果用
print "Set-cookie:"直接写的时候要注意:
1.一定要写path=/,否则不会成功;
2.每个name都要一个独立的"Set-cookie:";
3.不能
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论