3、perl进阶
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] #更改数组输出格式
3、perl进阶的更多相关文章
- 精通Perl(第2版)
精通Perl(第2版)(通往Perl大师之路必读经典书籍,体现了一种编程思维,能够帮你解决很多实际的问题) [美]brian d foy(布瑞恩·D·福瓦)著 王兴宇 刘宸宇 译 ISBN 978 ...
- OTRS 二次开发笔记
公司使用otrs系统处理业务工单,各种事件流.因为是开源免费系统,因此需要在上面做一些功能补充或定制的二次开发. otrs是什么? OTRS 是一个功能强大的工单系统.完美适用于服务台(Help De ...
- idea 插件的使用 进阶篇
CSDN 2016博客之星评选结果公布 [系列直播]零基础学习微信小程序! "我的2016"主题征文活动 博客的神秘功能 idea 插件的使用 进阶篇(个人收集 ...
- [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门
[.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门 1. 什么是正则表达式? 1.1 正则表达式概念 正则表达式,又称正则表示法,英文名:Regular Expression(简 ...
- 2017PHP程序员的进阶之路
2017PHP程序员的进阶之路 又是一年毕业季,可能会有好多毕业生即将进入开发这个圈子,踏上码农这个不归路.根据这些年在开发圈子总结的LNMP程序猿发展轨迹,结合个人经验体会,总结出很多程序员对未来的 ...
- mysql进阶(二十九)常用函数
mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...
- Perl系列文章
0.Perl书籍推荐 Perl书籍下载 密码:kkqx 下面是一些我学习Perl过程中读过完整的或部分章节的觉得好的书. 入门级别1:<Perl语言入门>即小骆驼 入门级别2:<In ...
- GO语言的进阶之路-初探GO语言
GO语言的进阶之路-初探GO语言 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么我们需要一门新语言 Go语言官方自称,之所以开发Go 语言,是因为“近10年来开发程序之难 ...
- python 正则进阶
1.group 除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能.用()表示的就是要提取的分组(Group).比如:^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的 ...
随机推荐
- Django之Form详解
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 1.创建Form类.View函数处理 from ...
- 剑指offer——圆圈中最后剩下的数字
1.如果通过环形列表去模拟圆圈的话,最后时间复杂度为O(mn),而且还需要一个辅助链表来模拟圆圈,空间复杂度为O(n). 2.通过找出递推公式的方法,求得递推公式为 时间复杂度为O(n),空间复杂度为 ...
- Havel-Hakimi定理 POJ1659
对于图的所有顶点,计算出每个顶点的度,度序列.给定一个序列判断序列是否可图. #include<cstdio> #include<algorithm> #include< ...
- EntityFramework 学习 一 Persistence in Entity Framework
实体框架的持久化 当用EntityFramework持久化一个对象时,有两种情形:连接的和断开的 1.连接场景:使用同一个context上下文从数据库中查询和持久化实体时,查询和持久化实体期间,con ...
- Spark- Spark基本工作原理
Spark特点: 1.分布式 spark读取数据时是把数据分布式存储到各个节点内存中 2.主要基于内存(少数情况基于磁盘,如shuffle阶段) 所有计算操作,都是针对多个节点上内存的数据,进行并行操 ...
- Linux下查看Python安装了哪些脚本模块
Linux下查看Python安装了哪些脚本模块 1.什么是rpm ? rpm 即RedHat Package Management,是RedHat的发明之一 .现在包括OpenLinux.fedora ...
- 2_flyweight, 轻量化模式
### instanced rendering. send shared data to gpu just once mesh, texture, leaves push every instance ...
- objdump 命令的用法
gcc命令之 objdump ---------------objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具---------- 以下3条命令足够那些喜欢探索目标文件与源代码之间的 ...
- informix 把数据从一个表倒到另外一个表中
drop table zrjReinUnClaimTmpT; create table zrjReinUnClaimTmpT ( mainid SERIAL not null, RepayNo var ...
- java基础回顾之IO
Java的IO 是Java运用重要部分之一,涉及到的内容也比较多,容易混淆,一段时间不用,可能就会遗忘,要时常回顾记忆一下: (图片来源于网络) Java 流在处理上分为字符流和字节流. 字符流处理的 ...