神奇的Perl-Perl语法(3)
1.1 print基本用法
Perl中有一些预定义的文件句柄,如标准输入STDIN、标准输出STDOUT、和标准错误STDERR。print为输出语句,可以输出到这些文件句柄中。但不输出末尾的回车换行符。
使用语法为:
print 输出句柄 要输出的字符串1, 要输出的字符串2,…, 要输出的字符串n;
如果输出到标准输出句柄中,默认为屏幕,可省略输出设备:
print 要输出的字符串1, 要输出的字符串2,…, 要输出的字符串n;
print STDOUT要输出的字符串1, 要输出的字符串2,…, 要输出的字符串n;
以上2个语句完成同样的功能。比如:
#perl2-6.pl
print STDOUT "abc","def";
print "12345";
输出结果为:
abcdef12345
Perl将输出先存在缓冲区,等到缓冲区满后再输出,可使用$|打开和关闭输出缓冲,当$|非0值,表示关闭输出缓冲,$|默认为0。 例如:下列代码向STDOUT和STDERR 输出字符串: print STDOUT "我出错了!\n故障表现为无法连接网站"; print STDERR "\n明白,故障正在处理\n"; 我们希望能输出如下结果: 我出错了! 故障表现为无法连接网站 故障处理中 但是运行这段代码却输出这样的结果: 我出错了! 故障处理中 故障表现为无法连接网站 因为STDERR是额外的输出路径,print函数属于行缓冲,遇到换行符后,就输出“\n”之前的“我出错了!”,而“故障表现为无法连接网站”放入缓冲区中,等待下一次的输出。我们关闭输出缓冲,强制把"我出错了!\n故障表现为无法连接网站"立即输出。 $|=1; print STDOUT "我出错了!\n故障表现为无法连接网站"; print STDERR "\n明白,故障正在处理\n"; 运行后得到了正确的输出。
1. 子程序
PERL的子程序可以出现在程序的任何地方。定义方法为:
sub 子程序名{
my ($参数1, $参数2, $参数3) = @_;
语句1;
语句2;
……
return (返回值);
}
调用子程序的方法如下:
&子程序名;
以下子程序完成求2数之和的功能:
#perl2-4.pl
sub add{
my ($x,$y)=@_; #取得子程序的参数
return($x+$y);
}
print &add(10,5);
输出:15
缺省情况下,子程序中最后一个语句的值将用作返回值,这意味着可以不使用return 返回值。我们把上面的程序改写一下:
#perl2-7.pl
sub add{
my ($x,$y)=@_; #取得子程序的参数
$x+$y;
}
print &add(10,5);
虽然没有使用return,但子程序仍然完成了它的功能,输出为:15
+-* / % 分别表示加、减、乘、除和取余。 比如: #perl2-8.pl $res=10+5; print $res;#加 print "#"; $res=10-5; print $res;#减 print "#"; print 10*5;#乘,没有使用变量,直接使用表达式,效果一样。 print "#"; print 10/5;#除 print "#"; print 10%3;#取10除以3的余数 ,结果为1 print "#"; 输出结果为: 15#5#50#2#1# ++为自增,--为自减。 如: #perl2-9.pl $res=10; $res++;#res=11 print $res; print "#"; $res--;#$res=11-1=10 print $res; 输出为: 11#10 1、数字比较 < 小于 = 等于 > 大于 == 等于 <= 小于等于 >= 大于等于 != 不等于 <=> 比较 2、字符比较 lt 小于 gt 大于 eq 等于 le 小于等于 ge 大于等于 ne 等于 cmp比较 X 使前面的字符串重复 . 连接字符串 比如: #perl2-11.pl print "xy"."z";#将xy和z连接成xyz print "#"; print "xy"x5;#将xy重复5次 输出:xyz#xyxyxyxyxy
Perl有以下逻辑运算符 and、&& 逻辑与 or、|| 逻辑或 not 、! 逻辑非 xor 异或 & 按位与 | 按位或 ~ 按位非 ^ 按位异或 << 左移 >> 右移 1. 基本操作符
5.1 算术操作符
5.2 自增与自减
5.3 比较操作符
5.4 字符串操作符
5.5 逻辑运算符
5.6 位操作运算符
Perl支持以下赋值操作符:1.1 赋值操作符
声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载