设为首页 收藏本站
查看: 1200|回复: 0

[经验分享] Perl经常使用函数一览

[复制链接]

尚未签到

发表于 2015-12-27 16:55:14 | 显示全部楼层 |阅读模式

  • 数学函数
  • 字符串函数
  • 数组操作
  • hash操作
  • 文件操作
  • 文件目录操作
  • 时间操作
  • 其他操作
  • 函数文档的查看
  • 经常使用的特殊变量
  • 经常使用的标准模块

数学函数
  abs 绝对值的获取



$ret = abs $num;
#abs(-3)的结果是3
  sqrt 平方根获取函数



$ret = sqrt $num;
#sqrt(4) 的结果是2
  int 整数值提取函数



$ret = int $num;
int(1.5)值是1,int(-1.5)值是-1
  ceil(POSIX)返回不小于 x 的下一个整数,x 如果有小数部分则进一位。



use POSIX 'ceil';
$ret = ceil $num;
  floor(POSIX) 输出最小的整数对于给定的实数



use POSIX 'floor';
my $num = 45.4;
my $floor = floor($num);
#结果是45
  rand 随机数的产生  返回大于0小于给定的数。



int(rand(10));
# 0 到 9 之间的整数
  looks_like_number(Scalar::Util)  如果表达式是number 返回true



use Scalar::Util 'looks_like_number';
$ret = looks_like_number $num;
字符串操作
  join 把字符片段合成一个字符串



$ret = join(',', @array);
  
  length 字符串的长度



$ret = length $str;
  
  substr($string,$initial_position,$length);
  三个参数:一个字符串,一个从零起点算的起始位置以及字符串的长度
  如果想要一直取到字符结尾,可以忽略第三个参数(子串长度)就行了。
  起始位置可以为负值,表示从字符串结尾开始倒数(-1代表最后一个字符)



$ret = substr($str, 2, 4);
  替换的模式



substr($str, 0, 2, $replace);
  
  index搜索字符串在主字符串中的相对位置
  返回的字符位置从零开始算起的。如果无法找到返回-1.
  可以加上可选的第三个参数,来指定开始搜索开始的地方。



$ret = index($str, $search, $pos);
  
  rindex  搜索子串出现的最后的位置。



$ret = rindex($str, $search);
  
  split 根据分隔符拆开一个字符串,第一个参数是正则表达式



@ret = split(/,/, $str);
  
  reverse
  在列表上下文,返回一个反序的列表,在标量上下文返回字符的逆序。



print join(", ", reverse "world", "Hello"); # Hello, world
print scalar reverse "dlrow ,", "olleH";    # Hello, world
  
  uc 返回字符串的大写



$ret = uc $str;
  
  ucfirst 返回首字母大写的字符串



$ret = ucfirst $str;
  lc 返回字符串的小写



$ret = lc $str;
  
  lcfirst 返回首字母小写的字符串



$ret = lcfirst $str;
  
  sprintf 指定格式的输出



$ret = sprintf("%08d", $num);
#前面前导0补位
ret = sprintf("%.2f", $num);
#小数点后2位


%c 数値をASCIIコードに対応する文字に変換
%s 引数を文字列として解釈
%d 引数を符号付整数として解釈
%u 引数を符号なし整数として解釈
%o 正数を8進文字列に変換
%x 正数を16進文字列に変換(小文字表記)
%X 正数を16進文字列に変換(大文字表記)
%b 正数を2進文字列に変換
%f 引数を浮動少数点として解釈
%e 引数を浮動小数点として解釈(指数表記(小文字)でフォーマット)
%E 引数を浮動小数点として解釈(指数表記(大文字)でフォーマット)
%g 引数を浮動小数点として解釈(指数表記(小文字)でフォーマット。末尾の0は削除される)
%G 引数を浮動少数点として解釈(指数表記(大文字)でフォーマット。末尾の0は削除される)
%p 引数に与えられた変数のメモリ上のアドレスに変換
  
  chomp去除末尾换行符



chomp $str
  
  q 单引号圈引



q/aaa'bbb/
# 相当于 'aaa\'bbb'
  
  qq双引号圈引



qq/aaa"bbb/
#相当于 "aaa\"bbb"
  
  quotemeta 正规表达式中使用特殊字符的反义



$ret = quotemeta $str
  
  chr 返回asicii码对应的字符



$ret = chr $num;
  

数组操作
  数组长度的获取



$ret = @array;
  
  数组最后索引号的获取



$ret = $#array;
  
  shift 移除数组的第一个元素并返回



$ret = shift @array;
  
  unshift 放入一个或多个元素到数组的开始



unshift(@array, @items);
  
  pop 数组中移除最后一个元素,并返回



$ret = pop @array;
  
  push 添加一个或多个元素到数组的尾端



push(@array, @items);
  
  splice 对数组元素的操作
  A.数组元素的取出



@ret = splice(@array, $pos, $size)
  B.数组元素的替换



splice(@array, $pos, $size, @items);
  
  数组的切片



@ret= @array[0, 1, 3]; # 数组的0,1,3位置的元素列表
  
  grep 符合条件元素的获取



@ret = grep { 条件 } @array;
  条件大于3的列表



@ret = grep { $_ > 3 } @array;
  
  map 所有数组元素的处理



@ret = map { 要素の操作 } @array;
  所有元素乘以2的集合



@ret = map { $_ * 2 } @array;
  
  max(List::Util) 数组中最大值的获取



use List::Util 'max';
$ret = max @array;
  
  min(List::Util)数组中最小值的获取



use List::Util 'min';
$ret = min @array;
  
  sum(List::Util)数组中元素的求和



use List::Util 'sum';
$ret = sum @array;
  
  sort 数组元素的排序
  [A]数值的顺序比较



@ret = sort { $a <=> $b } @array;
  [B]数值降序的比较



@ret = sort { $b <=> $a } @array;
  [C]asci码顺序的比较



@ret = sort { $a cmp $b } @array;
  [D]ascii码的降序排列



@ret = sort { $b cmp $a } @array;
  
  shuffle(List::Util)数组的随机排序



use List::Util 'shuffle';
@ret = shuffle @array;
  
  reverse 数组元素的倒序



ret = reverse @array;
  
  qw文字列的圈引(加上“和逗号)



@array = qw/cat dob mouse/;
  

Hash 的操作
  
  keys 键值的获取操作



@ret = keys %hash;
  
  values值得获取操作



@ret = values %hash;
  
  each 键-值对应的一一获取



($key, $value) = each %hash;
  通过循环进行获取



while (my ($key, $value) = each %hash) {
...
}
  
  exists 确定键值是否存在



$ret = exists($hash{$key});
  
  delete键值的删除



delete $hash{$key};
  
  reverse 键值对的翻转



%ret = reverse %hash;
  

文件的操作
  open 文件的打开函数



open(my $fh, "<", $file)
or die "Cannot open $file: $!";
  文件打开失败注意错误的处理
  
  [A]经常的操作



读取 <
写入>
追加 >>
  
  close 文件句柄的关闭



close $fh;
  
  <> 钻石操作符
  文件一行的读入



$line = <$fh>;
  通常与循环一起使用



while (my $line = <$fh>) {
...
}
  
  [A]所有行的读入
  列表上下文一次性所有读取所有文件内容



@lines = <$fh>;
  
  opendir  目录的打开函数



opendir(my $dh, $dir)
or die "Cannot open $dir: $!";
  注意失败进行相应的处理
  
  closedir 目录句柄的关闭



closedir $dh;
  
  readdir 目录文件名
  目录名的一一读取



while (my $file = readdir $dh) {
...
}
  

文件目录的操作
  unlink 文件删除



unlink $file
or die "Cannot remove $file: $!";
  
  copy(File::Copy) 文件的拷贝



use File::Copy 'copy';
copy($file_from, $file_to)
or die "Cannot copy $file_from to $file_to: $!";
  
  move(File::Copy) 文件的移动



use File::Copy 'copy';
move($file_from, $file_to)
or die "Cannot move $file_from to $file_to: $!";
  
  chdir 当前目录的变更



chdir $dir
or die "Cannot change directory $dir: $!";
  
  mkdir 目录的创建



mkdir $dir
or die "Cannot create directory $dir: $!";
  
  rmdir 目录的删除



rmdir $dir
or die "Cannot remove directory $dir: $!";
  
  mkpath(File::Path) 多层目录的创建



use File::Path 'mkpath';
eval {
mkpath $dir
};
if ($@) {
die "Cannot create $dir: $@";
}
  
  rmtree(File::Path) 包含文件目录的删除



use File::Path 'rmtree';
rmtree($dir, {error => \my $errors});
for my $diag (@$errors) {
my ($file, $message) = each %$diag;
warn "problem unlinking $file: $message\n";
}
  
  getcwd(Cwd) 当前目录的获得



use Cwd 'getcwd';
$ret = getcwd;
  
  chmod 文件权限的变更



chmod($permission, $file)
or die "Cannot change permission $file: $!";
  
  basename(File::Basename) 文件名的获取



use File::Basename 'basename';
$ret = basename $file;
# /a/b/c.txt  结果是 c.txt
  
  dirname(File::Basename) 文件包中目录名的获取



use File::Basename 'dirname';
$ret = dirname $file;
# /a/b/c.txt  的结果是 /a/b
  
  文件运算符
  确认文件和目录是否存在



#文件确认是否存在

$ ret = - f $file;
#目录的存在确认

$ ret = - d $dir;
  
  通常和条件语句一起使用



if (-f $file) {
...
}
  
  [A]常用的文件运算符一览



-f  文件是否存在
-d 目录是否存在
-r  是否可读
-w 是否可写
-x 是否可执行
-M 最后更新的天数
-A 最后访问天数
-s 文件尺寸的获取
  

时间
  time 1970年1月1日到现在的秒数



$ret = time;
  
  localtime 日期和时间的获取



($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime;
$year += 1900;
$mon += 1;
  
  sleep 休眠的秒数



sleep $sec;
  
  usleep(Time::HiRes) 休眠微秒



usleep $microsec;
  

其他函数
  defined 确定值是否定义



$ret = defined($val);
  
  kill函数的使用



kill($signal_number, $child_process_id);

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-157110-1-1.html 上篇帖子: 浅显讲解perl的模式匹配 下篇帖子: 计算机编程语言介绍(Perl)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表