| ||
在perl脚本中,如需经常实现某种功能,为减少脚本的重复和复杂度,可将其写成一个函数,传递变量进去或直接调用,以下是在脚本处理是应用到的几个函数,作个简单的记录:
实现获取某个文件最后修改的日期
#!/usr/bin/perl #!use strict; #!use warnings; sub getFileTime() { #@_为外部传递进来的变量,可以是单个参数(@_代表单个变量) #也可以多个参数(@_代表一个数组,$_[0]代表数组中第一个参数) my $mtime = (stat(@_))[9]; my ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime($mtime); $year += 1900; $mon++; #定义一个全局变量,为了外部也可以调用 our $tStamp = sprintf("%04d%02d%02d %02d:%02d:%02d",$year,$mon,$day,$hour,$min,$sec); }
#调用函数 &getFileTime($file); #此时$tStamp即为以上文件最后修改的日期 print"$tStamp\n";
实现获取某个文件readlink路径
本想传递两个参数,一个filepath,一个空数组,但总是不成功,后面发现好像创建函数时不加函数名后面的(),就可以传递多个参数,目前还没有测试,所以还是在函数外部创建一个全局变量数组
our @data=(); sub getOriPath() { #判断文件是否为链接 if (-l $_[0]) { my $oriPath = readlink($_[0]); #将path存入一个数组 push @data,"$oriPath\n"; }else { push @data,"$_[0]\n"; } }
#调用函数 &getOriPath(file);
实现打印有颜色的字体,只限终端显示,无法打印到输出脚本的里面
use Term::ANSIColor; sub ColorMessage{ my($colors,$messages) = @_; print color "bold $colors"; print "$messages \n"; print color 'reset'; }
#调用函数 &ColorMessage(red,"result is FAIL!\n");