3、perl进阶

摘要:
perl-le'$i=1;while{print$i;$i+=2}'    perl-le'%hash=;while{print"$a$b"}'for:for perl-le'for{print$i}'foreach:foreach与for是可以互换的,()内有两个分号就是for循环,没有分号就是foreach循环。perl-le'for{print}'循环控制:next:跳过这次循环,进入下次循环last:终止这一层次的循环redo:将3控制返回到当前循环块的顶端,而不经过任何条件的测试,也进入下次循环的迭代。

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 $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> " 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 / /,$_,3  #只对前3列切割    split /pattern/,expr,limit  split /pattern/,expr  split /pattern/

jion " ",@a              jion expr,list

print "@a"  print join " ". @a[1..3]  #更改数组输出格式

免责声明:文章转载自《3、perl进阶》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c# 日志记录 行号原创翻译:iOS 应用程序 蓝牙后台运行下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

各种分布式文件系统的比较

1、MooseFS 支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多,易用,稳定,对小文件很高效。+ 支持文件元信息+ mfsmount 很好用+ 编译依赖少,文档全,默认配置很好+ mfshdd.cfg 加 * 的条目会被转移到其它 chunk server,以便此 chunk server 安...

linux中常见的脚本工具

1、Perl Perl脚本最初为在Unix系统中更好的处理文本报表而设计,经过多年的发展已经成为一种广泛应用的高级脚本语言。Perl脚本对文本文件的处理功能依然非常强大,在图像处理、系统管理、网络编程、数据库编程等方面可有其用武之地。 2、Python Python是最近几年发展非常快的一种脚本编程语言,它的设计理念非常重视代码的可读性,其最显著的语法特点...

windows下Perl如何读取大文件的最后一行(总结)

Perl中读取文件最后一行的方法很多,比如 (1)将文件读入数组,取最后一个元素 open (FILE,"file.txt") or die "$!"; my @arr=<FILE>;; close FILE; my $last=$arr[$#arr]; #$last里就是最后一行的内容了。 (2)一行一行读入,到最后一行时输出 open...

perl语言 入门(转)

原文链接https://www.jianshu.com/p/2dc7bef783ed 参考链接 perl入门https://blog.csdn.net/ruby912/article/details/90721475 nux系统一般自带perl,可以在命令行运行。 1.Hello,World #!/usr/bin/perl -w pr...

攻防世界-web-i-got-id-200(perl文件上传+ARGV造成任意文件读取和任意命令执行)

题目来源:csaw-ctf-2016-quals 题目描述:嗯。。我刚建好了一个网站 进入场景后有3个链接,点进去都是.pl文件,.pl文件都是用perl编写的网页文件。 尝试后发现,Files链接可以上传文件并把文件内容打印出来。猜想后台应该用了param()函数。 param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的接收变量中。如...

c语言运算符

1.运算符概述 运算符是一种编译器执行特定的数学或逻辑操作的符号。C语言提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 其他运算符 2.算术运算符 算术运算符分为单目运算符和双目运算符,单目运算符表示只需要一个操作数,双目运算符需要两个操作数。 2.1 双目算术运算符 1)+ :加法,把两个操作数相加...