博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

基本内容

Posted on 2011-01-28 22:04  bw_0927  阅读(221)  评论(0)    收藏  举报
  • perl的四种变量:

scalar:以$开头的纯变量

数组:以@开头

Hash:以%开头

文件:大写

  • perl中没有关键字,因此可以取名为$if的变量,但有内置变量,例如$_
  • 整数的表示,15位的有效数字,16位及16位以后的数字被四舍五入地截断

12、  12e2(1200) e不分大小写、 -12、 1_200_000、 120_0000 perl处理数字时,自动忽略下划线、 012、 0x1f

  • 浮点数的表示

11.4、 -0.3、 .3、  3. 、 5.4e2、 5.4e+2、 5.4e-2 指数部分e或E,+或-,然后跟1到3位的数字,指数的范围为:-309到308,指数太小则整个数值显示为0,指数太大则整个数值显示为#INF

  • 最长匹配

当$str,$string都存在时,优先匹配$string.要匹配$str时,使用${str}ing

字符串可跨行写

  • 转义字符

\b  退格,删除前面一个字符

\cn   Ctrl-n

\e    Esc

\E    是\L   \U   \Q的结束符

\f     换页

\l     下一个字母是小写字母 

\L    其后所有的字母都是小写字母,直到\E结束

\u    下一个字母是大写

\U    其后所有的字母都是大写字母,直到\E结束

\r    回车      print  “abcd\rxyz”  打印xyzd

\Q   不查找模式匹配字符

\v   纵向跳格tab

  • 字符串的特殊用法

qq(string in qq) :相当于"string in qq"

q(string in q) :相当于'string in q'

其中()可换为<>,{},[]等配对字符对:  qq{string in qq};也可换为任意//,  ;;,等相同字符对: qq/string in qq/;

qq[string [in] qq];    qq[string <in> qq];也是对的

  • 变量的初值

未创建时状态为undef,到达文件尾也为undef,

声明变量为未定义:undef $a;或$a=undef;

用在条件判断中:if($a==undef)

代替不关心的变量:$s="a:b:c:d"; ($a1,undef,undef,$d1)=split(/:/,$s);

如果有undef变量又不知在哪,可加-w参数进行提示:  #!/usr/bin/perl -w

变量创建后状态为defined,一般用在条件判断中  if(defined $a)

一般未赋值就使用时,整数默认初值为0,字符在初值默认为空串“” : 

 

代码
$result=$undefined+2;

$oo
= undef;
if($oo == 0)
{
print
"==0\n";
}
if(!defined $oo)
{
print
"not defined oo\n";
}
if($oo == undef)
{
print
"==undef\n";
}

输出
==0
not defined oo
==undef

 

 

  •  相关函数

length()串长度,数字位数,

sin, sqrt, rand, srand

uc, lc, ucfirst, lcfirst 大小写

substr,index,pod

转换函数ord, chr, pack, unpack

chop()截去最后一个字符,无论是什么字符

chomp()截去末尾的行分隔\n,行分隔符可由$/定义。截去多个行分隔符:先把$/设为空串"",再chomp。chop和chomp都是直接作用于源字符串。

 

代码
#!/usr/bin/perl
$a
="abcd";
chop ($a);
print
"chop $a\n";
$a
="abcd";
chomp($a);
print
"chomp $a\n";

$abc
="abc\n";
chop($a);
print
"chop $a|";
$a
="abc\n";
chomp($a);
print
"chomp $a|";

$a
="ab\n\n\n";
$
/="";
chomp($a);
print
"chomp many $a\n";

$
/="cd";
$a
="abcd";
chop($a);
print
"chop $a|";
$a
="abcd";
chomp($a);
print
"chomp $a|";
  •  算术运算,算术比较,字符串比较

幂运算符**是右结合性   $a=2**3**2;

对小数取余,要先截取整数       $a=25.6%7.6   即$a=25%7 

位操作(&, |, ~, ^, <<, >>)的操作数也要是二进制整数,如果是小数也要先截取为整数

当一个字符参加运算时,自动转化为相应的整数,如果不能转换时则值为0。 ‘2’+1=3,  ‘a’+1=1.

算术比较运算符 <=>,自动把操作数转化为整数,不能转换为整数的则为0            $a<=>$b

 当$a>$b时,值为1              当$a<$b时,值为-1         当$a==$b时,值为0.

浮点数不精确,不要把值相近的数比较。

字符串比较运算符:  lt,  gt,  eq,  le,  ge,  ne,  cmp,会自动把操作数转化为字符串   123  lt  45  ---->    ‘123’ lt ‘45’

数字<大写字母<小写字母 

字符串可以从右向左进位,但字母数字分别进行。

数字比较要把操作数转换为数字,不能转换就为0,串比较把操作数转换为字符串。

  • 字符串连接和重复

连接运算符.

重复运算符x             x前后有空格          'a'  x  5  ='aaaaa'   如果重复次数<1,则返回空串。

  • ++     --

可用于字符串的自增,只在自己的序列内增,当z,Z,9时进位,进位导致长度增加。 $a='az';  $a++;  ------>$a='ba';     $a='Z'; $a++; ---->$a='AA';

不能用于字符串的自减,当$a---时,按数字运算,字符先转化为0,再自减。

 如果字符串中含有非字母符号,或数字位于字母中,自增也先转化为0再自增。$a='ab*c'; $a++;    $a='ab5c'; $a++;    ---->$a=1;

条件表达式用于=的左边   $condvar==43?$var1:$var2 = 14;

一般:自增自减最高,单操作数高于多操作数,数字运算>比较运算>位运算>赋值运算>逻辑运算.

不管是+=,-=,*=都是赋值运算,所以具有右结合性。