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

perl小结

发布时间:2020-12-15 23:42:02 所属栏目:大数据 来源:网络整理
导读:perl -V 显示很详细的信息 perl -S hello.pl #使用-S来搜索脚本的路径 perl -e 'print "@INC";'? 使用-e直接执行 perl hello.pl -I/usr/local/lib/modules?? ?使用-I指定搜索模块的路径 在命令行执行多行: perl - print "Hello!"; __END__ #####这个比较有用

perl -V 显示很详细的信息
perl -S hello.pl #使用-S来搜索脚本的路径
perl -e 'print "@INC";'? 使用-e直接执行
perl hello.pl -I/usr/local/lib/modules?? ?使用-I指定搜索模块的路径

在命令行执行多行:
perl -
print "Hello!";
__END__

#####这个比较有用
perl -ne "print;" file.txt

-n 的作用类似与while<>

perl "-" x 30
-----------------------------

perl -e "print __LINE__;"

对于一些匹配
{
[?? ?[
(?? ?(
像{不用转译,其他两个要

chop 将字符串的最后一个字符删除,返回删除的字符
chomp 除去的字符与$? 对应,避免一些误删

$x=$y=$z=1;
print join(","$x,$y,$z);

检查是否为字符串(字符串非空)
if($x & ~$x)

将字符串转成数字
$num = 0 + "100";
print $num;

$!存储当前操作系统的错误

插值
$text = "un";
print "Don't be ${text}happy.";
print "${&getmessage}";
print "${(uc "x")}";


$date=`cal`;
print $date;

使用...关闭裸词
use strict 'subs';


quotemeta在非字母或数字前加反斜杠
常由于正则表达式

stat("test");返回有关test的文件信息

join 只是以某种方式将数据聚集在一起
map? 对每一个数据进行一次作用
grep 从一堆数据中找出符合条件的

print join("," (map lc,A,B,C));

print join("," (map {2 * $_}? A," (grep {$_ > 15} A,C));

匿名数组编辑,与不改动原先的数组
@array1 ?= (1,1,1);
@array2 = grep {$_ *=2} @{[@array1]};
在map,grep 只有grep 才会改变$_;

排序
sort
print sort ("a","f","f");
print sort {$a cmp $b} ("c","r","y");

sub myfunction{
?? ?return (shift(@_) <=> shift(@_));
}
print sort {myfunction($a,$b)} (3,2,1);

reverse(@list); 相反的排序

$a = (2,4,5);
print $a; ///结果为5

@array = (1,3,5);
for($loop = 0;$loop <= $#array;$loop++)
$#array 为数组里的最后一个下标
对于负数的下标
-0为0,-1为最后一个元素

@a[2],和$a[2]? 好像是一样的东西

简单的程序:十进制转十六进制
use integer;
$value = 257;
while($value){
?? ?push @digits,(0 .. 9,a .. f)[$value &15];
?? ?$value /=16;
}
while(@degits){
?? ?print pop @digits;
}

链接两个数组
@a = (1,3);
@b = @a;
@c = @a + @b;
print @c;###结果是6
@c = (@a,@b);或者push @a,@b;

清空数组的三种方法
$#array = -1;
@array = ();
@array = undef;

数组切片
@a = (1,5,6);
@b = @a[1,5];

拼接数组
splice array,offset,length,list;
将从offset开始,length长度去除,并插入list


@a = (1,5);
if(exists($a[2]))???? delete $a[3];

@ARGV读取命令行参数

while(($key,$value) = each(%hash))

(sort) keys %hash?????,????? values %hash

%hash3 = (%hash1,%hash2)

为哈希表分配内存空间
keys(%hash) = 40_000;

运算符与优先级
print ((2+3)*4);? 结果是20
print (2+3) * 4;? 结果是5 当使用括号,print与它最近的()结合,//解释为函数
print +(2+3)*5?? 结果是20? 当使用引号"????? "?? 直接打印引号内的内容

glob '*'? 返回目录下与之对应的文件名列表

while()
{}continue{} continue块在每次while之后重复,不管next,照样执行
?? ??? ?而有last,就不会执行
?? ??? ?redo,也不执行

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

$text = "<A>Here is an anchor.</A>";if($text =~ /<(IMG|A)>[ws.]+</1>/i)m//? 和 s///?? 是从左边开始匹配,现在只替换一次,s///g? 现在将进行全局替换tr///? 将一个字符转换成另一个字符,后面什么都不加就是全局转化$xcount = ($text =~ tr/x/x/)? tr返回匹配到的次数c?? ?对查找列表求补d?? ?删除没有替换的字符s?? ?删除重复的替换字符/b([A-Za-z]+)b/?? b表示是在连续的字符组成的串中,$1,1是前面第一个括号匹配到的东西正则表达式的组成部分:字符,字符类,其他匹配模式,量词,断言,向后引用,正则表达式扩展量词:*(0或多次),+(1,或多次),?(1或0);???? 量词具有贪婪性断言:^ ??? ? 行收$?? ?行尾A?? ?字符串开头B?? ?非单词边界b?? ?单词边界G?? ?前一个m//g剩余的内容(仅仅能和/g一起使用)?? 获取前一个匹配没匹配到的东西Z?? ?字符串的末尾,或末尾前的新行z?? ?字符串的末尾(?=exrp) exrp可以匹配下一个,则匹配(?!exrp) exrp能匹配下一个,则匹配(?<=exrp)前一个(?<!exrp)$`?? $&???? $'?? 分别是匹配之前的内容,匹配的内容,匹配之后的内容$+? 最后一次匹配的内容w匹配字母数字字符一个函数 pos()返回最后一次m//g查找的位置$text = "Mary Tom Frank";while($text =~ /w+(?=s)/g){?? ?print "$&n";}在循环中定长表达式 !m/.{20,}/? 只编译一次,变量表达式,每次都编译可以使用m//o来优化经过编译的表达式qr/bisb/

(编辑:李大同)

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

    推荐文章
      热点阅读