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

perl系列:其他

发布时间:2020-12-15 21:00:36 所属栏目:大数据 来源:网络整理
导读:?文件测试符 ?? ?print "exitsn" if -e name;??? #测试文件或目录是否存在 ?? ?print "directoryn" if -d name;??? #测试name是文件还是目录 ?? ?print "NULLn" if -z name;??? #测试是否为空文件(无内容) ?? ?#省略name,则测试$_。 ?? ?#使用目录句柄

?文件测试符 ?? ?print "exitsn" if -e name;??? #测试文件或目录是否存在 ?? ?print "directoryn" if -d name;??? #测试name是文件还是目录 ?? ?print "NULLn" if -z name;??? #测试是否为空文件(无内容) ?? ?#省略name,则测试$_。 ?? ?#使用目录句柄读取文件时,不包含路径,因此在文件测试时要注意加上路径。 文件和目录的一些命令 ?? ?unlink??? #删除文件 ?? ?rename "old","new"??? #重命名文件 ?? ?mkdir??? #建立目录 ?? ?rmdir??? #删除目录 ?? ?$dir=$ENV{'PWD'};??? #获取当前目录 ?? ?chdir??? #切换工作目录 对于任何读入的外部数据,其任何操作都是在内存里进行的,必须再写回去才能对原数据修改。 高级排序 ?? ?1、sort只是按照ASCII码排序 ?? ?2、不区分大小写的字母排序 ?? ??? ?sort {"L$a" cmp "L$b"} @a;?? ? ?? ??? ?#实际上是使用了一个简写的匿名子程序,注意$a和$b相当于一个默认变量 ?? ?3、按值对散列排序 ?? ??? ?sort {$hash{$a} <=> $hash{$b}} keys %hash;?? ? ?? ??? ?#先取散列的键,按键对应的值大小排序,返回排序后的键 ?? ?4、高级排序原理 ?? ??? ?实际上是定义一个排序子程序,声明排序的依据,即需要比较的东西。 ?? ??? ?例如按值对散列排序中,排序的是键,但依据是键的值。 ?? ??? ?如果比较的数值,则使用"<=>";如果比较的字母,则使用"cmp"。 ?? ??? ?使用$a和$b作为默认变量,用来传递直接比较的参数。默认递增排序。 ?? ?5、可以定义一个子程序,实现多条件的排序。 ?? ??? ?sub by_multi {??? #对散列的键排序,先按值大小排序,值相同按键字母排序 ?? ??? ??? ?$hash{$a} <=> $hash{$b} or??? #注意"or"的使用 ?? ??? ??? ?$a cmp $b ?? ??? ??? ?} ?? ??? ?@a=sort by_multi keys %hash;??? #调用子程序排序 ?? ??? ?#注意这个子程序可看作sort的修饰符,没有使用参数,也没有使用& ?? ??? ?多条件排序也可以简写为匿名子程序,上面这个也可以写成: ?? ??? ?@a=sort {$hash{$a} <=> $hash{$b} ?? ??? ??? ??? ?or $a cmp $b ?? ??? ??? ??? ?} keys %hash; ?? ??? ?print "@an";??? #注意省略了子程序名 使用pod进行多行注释 ?? ?以"=标识符"开头,以"=cut"结尾。建议使用"=pod"开头。 ?? ?例: ?? ?=Readme ?? ?。。。。。。 ?? ?=cut 终止死循环 ?? ?ctrl+c或ctrl+break 数组取子集 ?? ?1、可使用下标抽取子集,但原数组不变 ?? ??? ?@a=(1..10); print "@an@a[4,8,2]n"; ?? ?2、使用splice提取子集,提取部分在原数组中删掉了 ?? ??? ?@a=(1..10); @b=splice(@a,2,3); print "@an@bn"; 取随机数和随机抽样 ?? ?rand(x)??? #返回[0,x)的随机数,若省略x,则默认为[0,1)。注意区间两侧的开闭。 ?? ??? ?注意:10以内的随机整数,不包括10,应该为:int(rand(10)) ?? ?@a=qw/A T C G/; push @b,$a[rand @a] for (1..n); ?? ??? ?有放回等概率抽样,n为样本含量 ?? ?@a=qw/A T C G/ x 10; push @b,splice(@a,rand @a,1) for (1..n); ?? ??? ?无放回抽样,n<=$#a 使用glob获取当前目录文件 ?? ?@files=glob "*.*"; ?? ?其功能可以使用目录句柄实现,但通配符"*"只能用于glob。 一句话命令 ?? ?perl可以使用'-e'参数直接在命令行执行简单程序。 ?? ??? ?perl -e 'print "$_n" for 1..<>'??? #注意程序应在两个单引号之间 ?? ?可以加文件名参数 ?? ??? ?perl -e 'while (<>) {print if /hello/}' test.txt??? #将test.txt中有hello的行输出 记录程序运行时间 ??? 1、获取程序运行总耗时 ????time perl x.pl ?? ??? ?#返回三个时间:real,user,sys ?? ??? ?#real是总时间;user是占用用户时间;sys是占用系统时间 ??? 2、在程序运行过程中输出时间 ??????? 2.1??? print scalar localtime,"n";??? #输出‘Fri May 17 09:25:18 2013‘ ??????? 2.2????$a=time; sleep(1); print time-$a,"n";??? #输出‘1’

(编辑:李大同)

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

    推荐文章
      热点阅读