perl脚本基础总结
1. 单引号字符串中的\n不会被当做换行符处理。 如:'\'\\' --> '\ 。
2. 双引号
字符串联 "Hello"."World"."\n" --> HelloWrold 换行;
字符串重复操作 "fred"×3 --> "fredfredfred";
大小写 "\l","\L" --> 小写 ; "\u","\U" --> 大写 ; "\E" 结束。
3. 字符串运算
== eq 相等
!= ne 不等
< lt 小于
> gt 大于
<= le 小于或等于
>= ge 大于或等于
4. 用户输入 <STDIN>
5. chomp函数:去掉文本的"\n"换行符。读写文件时,要去掉换行符。 如:chomp($text<STDIN>);
6. 单行注释:# ; 多行注释以 "=pod"开始,"=cut" 结束。
7. undef: 没有值时,表现为0或空字符串。
8. defined函数: 为undef时,返回false,其余返回true。
9. x 输出遍数。如:print "love" x 3 -->lovelovelove.
10. 特殊数组索引:"$#rocks" ,最后一个元素索引。
11. qw简写,代替 "" 功能。 如:qw(freds bany wilad dino);
12. @rocks=qw /break slasle labv/; #给数组赋值。
@copy=@qwarry; #将一个数组拷贝到另一个数组里。
13. pop:末尾取出元素;push:将一个或一列元素加在末尾。
如:pop(@array); push(@array,@others); #将@others添加到@array末尾。
14. shift 和 unshift 对数组首操作。 shift:取出首元素。unshift:将一个或一列加在首部。
15. 当把email地址插入双引号时,$email="fred\@bedrock.edu"; $email='fred@bedrock.edu';
16. perl最常用的默认变量:$_ 。 如: foreach(1..10){
print "I can $_!\n";
}
17. foreach控制结构
如: foreach $rock(qw/break Slee lawer/){
print "One rock is $rock . \n"; #打印数组
}
18. reverse 逆转操作,将一串列表按相反的顺序返回。
如: @fred=6..10;
@bareny=reverse(@fred); #@bareny="10,9,8,7,6".
19. sort:将输入的一串列表根据内部的字符顺序进行排序。
如:ASCII字符串 @rocks =qw/breaks sholer rubble gertdned/;
@sorted=sort(@rocks);
20. 强制转换成标量,context,可使用 scalar。
如:print "I have",scalar @rocks,"rocks!\n";输出为数字。
21. <STDIN>在列表context中: chomp(@line=<STDIN>); #读入所有行,不包括换行符。
文件输入完成时:linux/MACOS x,用 ctrl+d 结束;DOS/Windows, 用 ctrl+z 结束。
22. 调用子程序时,返回值为最后一个被计算的表达式。 @_ 是子程序的一个私有变量。 可以使用“my”创建子程序的私有变量,也可以在if ,untile ,foreach 块中使用。
如: my($fred,$bread); #定义两个私有变量。
如果新的私有变量没有被赋值的话,标量变量 会自动赋值为 undef ;数组变量 赋值为 空列表。
23. 使用strict Pragma 严格检查某代码;use strict 迫使采用更严格的检测。
24. 调用子程序 & 可省。
如: sub divsion{
$_[0]/$_[1];
}
my $quotient=divsion 355, 113; #调用,同 my $quotient=&divsion(355,113);
25. 严重错误和 die 函数
如: if(!open LOG,">>logfile"){
die "Cannot create logfile:$_!"; #$_ 输出系统错误信息
}
一般,0表示正常;非0表示失败。常见的:1-->命令行中语法错误; 2--> 运行错误 ; 3--> 没有找到匹配文件。
26. @ARGV 含义是包含了程序从命令行得到的所有参数。输入。
27. 复制文件: system('cp -r ./filea.txt ./map'); #将文件.txt复制到map文件夹下
29. 读文件: open(FILE,"file.txt"); # FILE 为文件句柄。
my $record;
while($record=<FILE>){
print ("file record is :$record\n");
}
close(FILE);
30. 写文件:open(FILE1,">write.txt");
syswrite(FILE1,"I konw it ! \n"); #将 "I konw it!"写入文件。
close(FILE1);
注:> 覆盖写入;>> 追加写入。
31. 创建文件夹:mkdir(hello,0777)||die "not create!\n";
创建文件: unless(-e "name.txt"){
open(FILE2,">name.txt") or &out_err("not create!\n");
}
删除文件:unlink("name.txt");
创建目录(可多级):mkpath(directoy,1,0711); 删除目录:rmtree(directoy,1,1);
删除文件夹:rmdir("hello")||die "not delete";
32. 数据库:windows下安装DBD:->cmd 输入 ppm install DBD::mysql
33.数据库连接: use DBI;
my $dbh=DBI->connect("DBI:mysql:database=数据库;host=localhost;port:3308","用户名","密码",{'RaiseError'=>1});
my $sth=$dbh->prepare("select * from asset");
$sth->execute();
while(my $ref=$sth->fetchrow_hashref()){
print "$ref->{'id'}\t".
"$ref->{'name'}\n";
}
$sth->finish();
$dbh->disconnect();
34.哈希:my %last_name=(
"fred"=>"finished",
"dion"=>"undef",
"barney"=>"rubble"
);
35. keys 和values 函数
my %hash=("a"=>1,"b"=>2,"c"=>3);
my @k=keys %hash; #得到key值
my @v=values %hash; #得到values值
注: @k和@v中的"a","b","c" 的顺序可能不同,但是@k和@v还是一一对应的。如"b"=>2,可能在第三位。
36. each函数:迭代hash中的每个元素。
如:while(($key,$values)=each %hash){
print "$key=>$values\n";
}
37. exists 函数: if(exists $books{$dino}){ };
delete函数: delete $books{$dino}; #删除
38. 大小写转换: $_="I saw Barney with Fred.";
大写:S/(fred)|barney/\U$1/gi; #BARNEY
小写:S/(fred)|barney/\L$1/gi; #barney
39.split操作:分割 @fields =split /separtor/,$string;
如: @fileds=split/:/,"abc:def:d:h";
join粘合函数: my $result = join $glue,@pieces;
如:my $x=join ":",4,5,6,7,8; # 4:5:6:7:8
40. 控制条件 unless 除非条件为真,否则执行块中代码。
unless($fred=~/^[A-Z-]\W*$/i){
print "The $fred";
}
until:与while相反,当条件为假时,重复执行。
41. $n=++$m; #先将变量加1,再取值;
$n=$m++;#先取值,在加1.
42. last会立刻结束循环。 for,foreach,while,until,裸块。
next 跳到当前循环的最后面,next之后进入下一轮循环。
redo 调到当前循环的顶端,不进行条件表达式判断以及接着本次循环(可放到循环体后面)。
标签块: LINE:while(<>){
foreach(split){
last LINE if/__END__/;
}
}
43. 三元操作符:Express?if_true_exp : if_false_exp
44. localtime函数:时间转换
如:my $timestemp=1180630098;
my $date=localtime $timestemp;
格式:my($sec,$min,$hour,$day,$mon,$year,$wdy,$yday,$isdst)=localtime $timestemp;
my $now=gmtime; #得到当前时间
45. chdir 改变工作目录。 如:chdir "/etc" or die "cannot chdir to /etc:$! ";
globbing:shell将每一个命令行中的任何的文件名模式转换成它所匹配的文件名。
如: my @all_files=glob "*";
my @pm_files=glob "*.pm";
my @all_files=<*>;
46. 目录句柄:打开:opendir 读入:readdir 关闭:closedir (用法与打开文件相似)
重命名: rename "old","new";
改变文件或目录权限:chomd 。 如:chomd 0075,"fred","bamey";
chown :改变一批文件的所有者及所在的组。
如: defined(my $user=getpwnam "merlyn"); #getpwnam将名字转化为数字
defined(my $group=getgrnam "users"); #getgrnam将组名转化为数字
chown $user,$group,glob "/home/merlyn/*"; #返回文件个数
readlink:符号连接指向的地方。 如: my $perl =readlink "/usr/local/bin/perl";
47. 使用索引寻找字符串:index
$where =index($big,$small); #从0开始编号
rindex: 某个字符串最后出现的位置。
substr: $part = substr($string,$inintial_position,$length); #inintial_position:从0开始的编号的初始位置。length:字符串长度。string:父串
如: my $mineral=substr("Fred J.Flintstone",8,5); #得到"Flint"
替换: substr("hello ,world",0,5)="GoodBye"; #GoodBye,world
48. sprintf 格式化数据,返回值为被请求字符串,而非打印。
如:my $money=sprintf "%.2f",2.49997; #2.5049. eval 捕捉错误,放在$@中。
49. 使用grep在列表得到元素。
如:my @odd_number=grep{$_%2} 1..1000;
50. perl 目前遇到的安装模块:main::tail
perl脚本基础总结的更多相关文章
- 从游戏脚本语言说起,剖析Mono所搭建的脚本基础
0x00 前言 在日常的工作中,我偶尔能遇到这样的问题:“为何游戏脚本在现在的游戏开发中变得不可或缺?”.那么这周我就写篇文章从游戏脚本聊起,分析一下游戏脚本因何出现,而mono又能提供怎样的脚本基础 ...
- shell脚本-基础
shell脚本-基础 编程基础 程序是指令+ 数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell 程序提供了编程能力,解释执行. 计算运行二进 ...
- 什么是Shell?Shell脚本基础知识详细介绍
这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...
- crontab不执行perl脚本分析
在新装的Linux服务器上部署了一个作业监控磁盘空间并提前告警,在shell脚本里面调用了一个perl脚本发送告警邮件.结果出现了一个很奇怪的现象:如果手工执行该脚本/home/oracle/scri ...
- Perl 语法 - 基础
perl语言的核心是正则表达式,在文本处理上非常有优势,与python类似,但语法不同,perl的语法很灵活,用多了才会觉得好用. 常用知识点总结: perl语法类似于C语言(perl源于Unix), ...
- linux 全自动提权 exp perl脚本
linux 全自动提权 exp perl脚本 作者: admin 日期: 2013/01/19发表评论 (0) 查看评论 国外流传过来的 地址 http://dl.packetstormsecur ...
- perl 脚本测试
原文地址: http://blog.csdn.net/johnny710vip/article/details/8905239 这是一篇关于perl脚本测试的总结性文章,其中提到了很多实用的 ...
- csv,txt,excel文件之间的转换,perl脚本
最近接触一些需要csv,txt,excel文件之间的转换,根据一些网上搜索加上自己的改动,实现自己想要的结果为主要目的,代码的出处已经找不到了,还请见谅,以下主要是针对csv&excel 和t ...
- 【转】FTP自动上传文件的perl脚本以及配置文件
这个perl文件将执行的任务是, 按照指定的文件夹目录,自动将该文件夹下的所有文件上传到指定ftp站点的指定目录下 本应用程序设计的几个基本理念是:工具箱再利用:尽可能利用已有的工具:简化运行步骤:不 ...
随机推荐
- <input type="file">中怎设置那个按钮的样式
最近才开始学习HTML,在练习表单的过程中,发现在使用<input type="file"/>这个类型的元素,产生的文件框和浏览按扭,它们的样式往往不符合我们的需要.怎 ...
- Android控件— — —ImageView
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...
- Python学习路程day8
Socket语法及相关 socket概念 A network socket is an endpoint of a connection across a computer network. Toda ...
- hdu 2059
ps:终于解决了....卡了我好久.最后用了DP.然后还有记忆化搜索优化了一下.终于AC了 思路:要计算dp[n](就是到第n个站的最短时间,也就是最优方案),必须知道dp[0]到dp[n-1] 设j ...
- 关于工伤事故索赔计算很好用的一款APP
关于工伤事故索赔计算很好用的一款APP.详细介绍工伤伤残等级评估 工伤计算器根据国家颁布<劳动能力鉴定 职工工伤与职业病致残等级>,通过关键字检索,快速评估工伤伤残等级. 软件说明: 1 ...
- 苹果IPhone手机由于更新了IOS7 Beta测试版导致“激活出错”后,如何还原电话本和照片方法
苹果这狗日的,手段果然狠,因为用户提前升级了测试版又没有更新正式版,就突然把手机变砖头,既不让升级正式版,也不让备份手机中的信息,确实有必要这样吗? 我的手机是IPone4s,在看了6月Apple W ...
- 从零开始学习Node.js例子五 服务器监听
httpsnifferInvoke.js var http = require('http'); var sniffer = require('./httpsniffer'); var server ...
- MINIX3 内核整体架构回顾及内核定 性分析
MINIX3 内核整体架构回顾及内核定 性分析 12.1 注意事项 由于本文档不对 I/O 文件系统做出分析,所以在此不对 MINIX3 整体做出一个分 析,本章主要是针对内核进程分析.并且这里的模 ...
- 网络编程-socket
本节内容: 一:TCP/IP:Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议.即通讯协议.是主机接入互联网以及互联网中两台 ...
- tableView
Table View简单描述: 在iPhone和其他iOS的很多程序中都会看到Table View的出现,除了一般的表格资料展示之外,设置的属性资料往往也用到Table View,Table View ...