欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

神奇的Perl-Perl语法(3)

程序员文章站 2022-03-02 11:39:25
...

1.1         print基本用法

Perl中有一些预定义的文件句柄,如标准输入STDIN、标准输出STDOUT、和标准错误STDERRprint为输出语句,可以输出到这些文件句柄中。但不输出末尾的回车换行符。

使用语法为:

print 输出句柄 要输出的字符串1, 要输出的字符串2,…, 要输出的字符串n;

如果输出到标准输出句柄中,默认为屏幕,可省略输出设备:

print 要输出的字符串1, 要输出的字符串2,…, 要输出的字符串n;

print  STDOUT要输出的字符串1, 要输出的字符串2,…, 要输出的字符串n;

以上2个语句完成同样的功能。比如:

#perl2-6.pl

print STDOUT "abc","def";

print "12345";

输出结果为:

abcdef12345

1.1.1 输出缓冲

 Perl将输出先存在缓冲区,等到缓冲区满后再输出,可使用$|打开和关闭输出缓冲,当$|0值,表示关闭输出缓冲,$|默认为0

 例如:下列代码向STDOUTSTDERR 输出字符串:

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

1.     基本操作符

1          

2          

3          

4          

5          

5.1         算术操作符

+-* / %  分别表示加、减、乘、除和取余。

比如:

#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#

 

 

5.2         自增与自减

++为自增,--为自减。

:

#perl2-9.pl

$res=10;

$res++;#res=11

print $res;

print "#";

$res--;#$res=11-1=10

print $res;

输出为:

11#10

 

 

 

5.3         比较操作符

1、数字比较

< 小于

= 等于

> 大于

== 等于

<= 小于等于

>= 大于等于

!= 不等于

<=> 比较

2、字符比较

lt 小于

gt 大于

eq 等于

le 小于等于

ge 大于等于

ne 等于

cmp比较

 

 

5.4         字符串操作符

X 使前面的字符串重复

.  连接字符串

 

比如:

#perl2-11.pl

print "xy"."z";#xyz连接成xyz

print "#";

print "xy"x5;#xy重复5

输出:xyz#xyxyxyxyxy

 

 

 

 

 

5.5         逻辑运算符

Perl有以下逻辑运算符

and&& 逻辑与

or||  逻辑或

not ! 逻辑非

xor  异或

 

 

5.6         位操作运算符

 & 按位与

 | 按位或

 ~ 按位非

 ^ 按位异或

<< 左移

>> 右移

 

 

 

1.1         赋值操作符

Perl支持以下赋值操作符:

= **= +=*=&=<<=&&=-=/=|=>>=||=.=%=^=x=

 

 声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载

 

 

 

 

 

 

 

 

 

相关标签: Perl