加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl学习笔记

发布时间:2020-12-15 23:42:04 所属栏目:大数据 来源:网络整理
导读:#!/usr/bin/perlmy $tmp = "ye_qing";my @name = split("_",$tmp);my $list = "==$name[0]==$name[1]==n";print $list;my @ye=(1,2,3,4);my @qing=(1,@ye,4,5,6);$scount = @qing;print "==sum:$scount==n";print "==@qing==n";$count=1;while($count=@qi

#!/usr/bin/perlmy $tmp = "ye_qing";my @name = split("_",$tmp);my $list = "==$name[0]==$name[1]==n";print $list;my @ye=(1,2,3,4);my @qing=(1,@ye,4,5,6);$scount = @qing;print "==sum:$scount==n";print "==@qing==n";$count=1;while($count<=@qing){? print("==age:$qing[$count-1]==n");? $count++;}@sortList = sort(@qing);print "--sort:---@sortList--n";######### 将去掉键盘输入字符串最后一个字符--换行符号@list=("rabbit","12345","yeqing");chop(@list);print "--@list--$list[0]--$list[1]--$list[2]--n";######### 将数组和字符串按照::串连起来$string = join("::",@list,"hello world!!!");print "--$string--n";######## 将字符串按照::分割成数组@arr=split(/::/,$string);print "====@arr====n";######## hash%h = ('a'=>1,'b'=>'_',c=>'hello');print "hash:--$h{a}--$h{b}--$h{c}--n";##### 删除hash中一个元素delete $h{b};print "hash:--$h{a}--$h{b}--$h{c}--n";######清空hashundef %h;print "hash:--$h{a}--$h{b}--$h{c}--n";#####获取hash中所有key%h = ('a'=>1,c=>'hello');@all_key = keys %h;print "==@all_key==n";#####hash排序#所有键值,是按hash的值从大往小排列的。值的比较是数字比较(比如说,10>9)@all_keys = sort{$h{$b}<=>$h{$a}} (keys %h);# 所有键值,是按hash的值从小往大排列的。值的比较是数字比较@all_keys = sort{$h{$a}<=>$h{$b}} (keys %h);# 所有键值,是按hash的值从小往大排列的。值的比较是字符串比较(比如说,'10' < '9')@all_keys = sort{$h{$a} cmp $h{$b}} (keys %h);#判断hash是否包含keyexists($h{$key});#########输出hash存储了多少数据print scalar keys %h,"n"; #遍历一个hashwhile (my ($k,$v) = each %h) {print "$k ---> $vn";}#### while循环使用# last是跳出现在所在的循环,next则是跳过下面的指令直接执行下一次的循环。while(chomp($i=100100100100100100100100100100)) {?next if ($i == 5);?last unless ($i > 10);}################# 举例# 求一组数的和并打印。my $s1 = &sumvar(11,22,33);my $s2 = &sumarg(22,33,44);my $s3 = &sumgod(11,44,55);print "s1=$s1,s2=$s2,s3=$s3n";# 办法1sub sumvar {? # 将参数数组的前三个元素值相应地赋给($first,$second,$third)? (my $first,my $second,my $third) = @_;? # 返回其和值。缺点: 如果是求四个参数的和,依然只能给出前三个的和。? return $first + $second + $third;}# 办法2sub sumarg {? #$_[0] 表示参数数组@_的第一个元素。其余类推。? my $first = $_[0];? my $second = $_[1];? my $third = $_[2];? #返回其和值。缺点: 同sumvar. 只是通过这里学习 $_[0] 这种用法。? return $first + $second + $third;}# 办法3,参数可以任意多。都能求其和。sub sumgod{? my $s = shift @_;? foreach ( @_ ) {?? $s = $s + $_;? }? #同前面函数max。? return $s;}#################### 总结数据操作* $ - 声明与引用用一个scalar的变量* @ - 声明与引用一个list,但是当访问一个list的成员时,需使用$ListName[index]* % - 声明与引用一个hash表,但是当访问一个hash的成员时,需要使用$HashName{key}特殊变量* $0 - 当前运行脚本的文件名* @ARGV - 当前运行脚本的命令行参数列表* $_ - 默认变量,如循环中的当前变量* @_ - 函数的输入参数列表* %ENV - 系统的环境变量* @INC - Perl的Include路径列表,我们可以往该列表中添加我们自己的目录来方便引用自定义的库* $! - 当前系统提示,错误信息* $^O - 操作系统的名字* STDIN,STDOUT,STDERR - 输入输出的默认句柄,可以作一定的自定义* => - 声明一个hash时可以用来明确的表示出key=>value的对应关系* $^I- 指定备份的文件的后缀名,如此,被修改的文件将会自动以该后缀名保存一个副本特殊用法* &Sub - 调用一个函数,虽然Perl有些规则让你在某些时候可以省略这里的&符号,但是处于一致性考虑,所以自定义的函数的调用,我一律采用此种方式。* $# - 用来取得模个数组的最大index,一般情况下,也可以用-1来表示最后一个元素的index的* qw() - 快速声明一个字符串数组,可以省略那些烦人的引号正则表达式* $ - 获取被括号捕获的匹配* $`,$&,$' - 获取匹配的字符串,以及其前后两个部分* ^,$ - 字符串的始末位置,用作定位常用函数* pop,push,shift,unshift,reverse - list的操作函数* keys,values,exists,each,delete - hash的操作函数* chomp,split,join,index,substr,sort - 字符串操作函数* sprintf,printf,print - 格式化输出函数* system,exec,`` - 系统命令调用函数* glob,unlink,mkdir,rmdir,rename,chmod,chown,open,close,opendir,closedir - 文件系统操作函数* stat,lstat,localtime,gmtime,utime - 文档属性,时间相关函数* hex,oct - 二进制,八进制,十六进制数转化成十进制的函数* grep,map - list高级操作函数#这些函数的详细介绍,都可以通过命令:#perldoc -f functionname#查到常用库* File::Basename - 根据path获取文件名或者文件路径* File::Spec - 根据文件名与路径组合成全路经* File::Find - 递归遍历某个目录下所有文件* XML::Simple - 以一个复杂的结构来表示xml文件,使用起来相当方便* Time::HiRes - 经常用来计算一个操作所耗费的时间* Getopt::Long - 当脚本需要复杂的输入参数与选项时用到* Cwd - 拿到当前工作目录* IO::File - 文件操作

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读