在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、条件判断与循环结构(if (unless) while(until) for foreach next last redo)if (unless)关系运算符: 数字关系运算符(>,>=,<,<=,==,!=) 字符串关系运算符(gt,ge,lt,le,eq,ne) 数字中0是假,其余是真;字符中空字符串("")和字符串("0")是假,其余是真;未定义的undef是假。 例子:0.00是假,是0的另一种写法;"0.00"是真,它是字符串;"00"是真 逻辑运算符: &&(and) ||(or) !(not) 循环:while(until): 最简单的一种循环是while,只要表达式为真,就重复执行代码块。 perl -le '$i = 1;while($i <=10){print $i;$i+=2}' perl -le '%hash = (1..12);while(($a,$b)=each(%hash)){print "$a\t$b"}' for: for(initialization;test;increase) perl -le 'for($i=1;$i<=10;$i+=2){print $i}' foreach: foreach与for是可以互换的,()内有两个分号就是for循环,没有分号就是foreach循环。 perl -le 'for(1..10){print}' 循环控制:next:跳过这次循环,进入下次循环 last:终止这一层次的循环 redo:将3控制返回到当前循环块的顶端,而不经过任何条件的测试,也进入下次循环的迭代。 三个都是在本block中其作用,要想跳出更高层次的block可以用标签。 2、变量的声明(my local our)my:把名字和值限于本层模块或者函数可以看到,高一层或者低一层都看不到。 perl -le 'my $a = 12;{my $a = 34;print $a;}print $a' #结果是12 34 our:限于一定范围,其实就是声明一个“全局变量“,虽然是在某个模块和函数里面定义的,但是外面也可以访问。 perl -le '{our $a = 34;print $a;}print $a' perl -le '{my $a = 34;print $a;}print $a' local:本层以及本层一下的函数可以看到本层的变量,但是本层上一层的不可以。 3、文件的读取1):$a = <STDIN>;chomp $a; 或者chomp($a = <STDIN>) @a = <STDIN> perl -le 'print "please input your number:";chomp($a = <STDIN>);print ++$a' 2):perl -le 'while(<>){chomp;print $_}' file1.txt 3):perl -le 'open IN,"./infile1.txt";open OUT,">outfile";while(<IN>){chomp;print OUT $_};close IN;close OUt;' 4):perl -le 'open IN,$ARGV[0];open OUT,">$ARGV[1]";while(<IN>){chomp;print OUT $_};close IN;close OUt;' infile outfile 4、处理错误1):die 触发错误时给出错误信息 2):use warning 给出警告信息(局部写法) #!/usr/bin/perl -w(全局写法) 3):use strict 编译指令,对语法要求严格,需要对变量适应范围作出声明。 #!/usrbin/perl -w use strict; die "perl $0 <input> <outfile>\n" unless @ARGV==2; open IN,$ARGV[0] || die; open OUT,">$ARGV[1]" || die; while(<IN>){ chomp; print OUT $_ }; close IN; close OUt;' 5、文件j夹的操作perl -le 'my $a= "./";opendir IN, $a || die;while(my $filename = readdir IN){chomp;print $filename;};closedir IN;' #等同于ls 6、文本处理函数(split,join)split /\t/,$_,3 #只对前3列切割 split /pattern/,expr,limit split /pattern/,expr split /pattern/ jion "\t",@a jion expr,list print "@a" print join "\t". @a[1..3] #更改数组输出格式 |
请发表评论