| ||
在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");
/1