ljm_147258mei的个人空间 https://blog.eetop.cn/1768385 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

perl 创建函数

已有 340 次阅读| 2023-12-27 16:39 |个人分类:perl|系统分类:芯片设计

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


评论 (0 个评论)

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 0

    粉丝
  • 0

    好友
  • 0

    获赞
  • 0

    评论
  • 18

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-25 14:40 , Processed in 0.081492 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部