PERL入门学习之二

来源:互联网 发布:修改pdf的软件 编辑:程序博客网 时间:2024/05/12 04:40

 

Perl中最简单的语句组合称为块: 语句块可以嵌套
{
  statementa;
  statementb;
  statementc;
}
if(expression) biock;
if(expression) biock elseif block else block;

数字比较:仅能使用于数值
==、> 、< 、=> 、 <=、!=
字符串的比较:顺序同上
eq,gt,lt,ge,le,ne
这些运算符通过从左到右观察每个字符,然后按照ASCII的顺序对它们进行比较,来确定
“大于”和“小于” 。这意味着字符串按照升序进行排序,大多数标点符号放在最前面,然后
是数字,接着是大写字母,最后是小写字母。例如,1506大于Happy,而Happy又大于happy。

PERL的如何表达的真:
1,数字0为假。
2,空的字符串""和字符串"0"为假。
3,未定义值undef为假。
4,其他东西均为真。
常见的真假特别样例;
0    ---假。数字0为假
10   ---真。这是个非0数字,因此是真
9>8   ---真。关系运算符将根据你的期望返回真或假
-5+5  ---假。这个表达式计算后得出的结果是0,而0是假
0.00  ---假。这个数字是0的另一种表示法,0x0,00,0b0和0e00也是一样
""   ---假。在上面介绍的规则中明确讲到这个表达式是假
" "   ---真。引号中有一个空格,这意味着它们并不是完全空的
"0.00" ---真。真奇怪!它已经是个字符串了,而不是“ 0”或“” 。因此它是真
"00"  ---也是真,原因与“0.00”相同
"0.00"+0---假。在这个表达式中,对0.00+0进行了计算,结果是0,因此这是假。

undef这个值在Perl中是个特殊值。尚未设置的变量均拥有undef这个值,并且有些函数在
运行失败时也返回undef。它不是0,也不是一个普通的标量值。

逻辑运算表达式
&&(and)   $s && $t 只有当$s和$t都是真时,才是真
     $q and $p 只有当$q和$p都是真时,才是真
||(or)    $a || $b  如果$a或$b是真,则为真
     $c or $d 如果$c或$d是真,则为真
!(not)  ! $m 如果$m不是真,则为真
     not $m 如果$m不是真,则为真
运算符 || 和or并不完全相同。它们的差别在于 || 的运行优先级要高于or。
这个规则也适用于 && / and和 !/not。

Perl的逻辑运算符有一个有趣的属性,那就是它们不仅仅返回真或假,它们实际上返回计
算得出的最后值。例如,表达式5 && 7的计算结果并不只是返回真,而是返回7。
#赋值如果$f为真着赋值否则赋值default
$d = $f || "default";

循环表达式:
$continue = 1;
while($continue < 10 ){
 print "循环的值是:${continue}./n" ;
 $continue++;
}
for($a = 0 ; $a < 12 ; $a = $a + 1){
  print "输出参数值:${a}./n";
}    

如果在 if语句块中只有一个表达式,那么该表达式实际上可以放在if语句的前面。
expression if(test_expression);
例如:
$correct = 1 if(&a == &b);
ptint "NO PI for you !!" if(&pi != 3.1415);

循环强制退出:last 相当于Java的break;多重循环时退出当前循环
while( &i < 10){
 last if($i == 5);
 $i++;
}
跳过当前循环next,相当于Java的continue;
for(&i = 0 ; $i < 101 ; $i++){
 next if( not $i / 2);
 print "偶数 $i .";
}

语句块的表示:
OUTER while(expression){
 INNER while(expression){
    expression;
  }
}
last,redo和next都可以与语句块连用,去影响操作对应的语句块。
当程序遇到exit时,程序就终止或退出将操作权交付系统。
注意:exit语句具有某些对你的操作系统非常重要的副作用。当一个exit执行时,
所有打开的文件均被关闭,文件锁被解开,Perl分配的内存被释放给系统,
Perl解释程序执行清楚的关闭操作。

Perl里面的变量只有标量,数组,哈希之分,虽然有时候reference也能用做变量,但是基本的还是这几类。
没有字符变量和数字变量之分。标量可以理解为一个变量,用$表示,数组是多个标量的集合,也就是多个变量,
用@表示,哈希也是多个标量的集合,但是没有标量有了和他相随的特征标识,用%表示。标量,数组和哈希的命
名空间是独立的,所以$name,@name和%name是互不干扰的。标量的使用只要用$name就可以了。
数组的使用:数组里面的标量是按顺序排列的,数组元素就用$name[0],$name[1]表示,
哈希的使用:哈希里面的标量是根据各自的特征标识来区分的,没有先后之分,哈希元素用$name{0},$name{1}表示。

简单数组:
#!/usr/bin/perl -w
$d = "测试";
@a = (5,'apple',$d,3.14); # 定义数组和赋值
print "简单数组:@a[0],@a[1],@a[2],@a[3]./n"

@a = qw(appe banane 3.14 $d) #列表的每个元素之间用一个白空间(空格、制表符或换行符)隔开。
print "QW定义数组:@a[0],@a[1],@a[2],@a[3]./n"
print "@a";//打印结果同上
print "使用标量名和索引来访问数组值:$a[2]./n";
$size = $#a+1;
#$#a最后一个元素所在的索引。
print "数组的长度:$size /n";
$size = @a;
print "数组的长度2:$size";
$left = ('a','b','c','d');
print "${left} /n"; #经过一而在的被循序赋值之后,$left = 'd';

也可以为数组设定负索引。负索引号从数组的结尾开始计数,然后反向
递增。例如,$array[-1]是@array的最后一个元素,$array[-2]是倒数第二个元
素,依次类推。
前一数组的$d和后一数组的$d输出不是同一值,请注意。“测试”--“$d”;
@clean = ( ) ; #清除数组的所有元素。

@boy=qw(Greg Peter Bobby);
@girls = qw(Marcia Jan Cindy);
@kids = (@boys,@girls);
@family = (@kids,('Mike','Carol'),'Alice');
相当于:@family=qw(Greg peter Bobby Marcia Jan Cindy Mike Carol Alice);

($a, $b, $c)=qw (apples oranges bananas);
将apples,oranges,bananas分别给$a, $b, $c进行赋值;

($a, &b, $c)=qw (apples oranges bananas);
即: $a = ’apples‘;
&b = ('oranges','bananas');
$c 是undef;

($a, &b, $c)=qw (apples oranges bananas nut);
nut 不被使用的值;

列表上下文中localtime返回的值
#localtime函数 返回当前时间
print scalar(localtime);
$sec 秒,0 ~ 59
$min 分,0 ~ 59
$hour 时,0 ~ 23
$mday 月份中的日期,1 ~ 28、29、30或3 1
$mon 年份中的月份,0 ~ 11(这里请特别要小心)
$year_off 1900年以来的年份。将1900加上这个数字,得出正确的4位数年份
$wday 星期几,0 ~ 6
$yday 一年中的第几天,0 ~364或365
$isdst 如果夏令时有效,则为真

原创粉丝点击