当前位置: 首页 > news >正文

黄埔做网站的公长春标准网站建设

黄埔做网站的公,长春标准网站建设,游戏网站设计书,php网站屏蔽词怎么做前言 写了一个脚本可以同时检查多个仿真log文件,并生成html表格。按照文件修改时间从新到旧排序。但是一直无法使用stat函数获取修改时间。 结论:find函数会改变程序执行的当前目录,find(\&process_files, $dir);函数是在$dir目录下运行…

前言

写了一个脚本可以同时检查多个仿真log文件,并生成html表格。按照文件修改时间从新到旧排序。但是一直无法使用stat函数获取修改时间。

结论:find函数会改变程序执行的当前目录find(\&process_files, $dir);函数是在$dir目录下运行的

正文

测试环境的目录结构如下:

.
├── check_logs.pl
└── logs├── 1.txt├── 2.txt└── 3.txt1 directory, 4 files

一、使用内置函数stat

perl提供一个内置函数stat()获取文件相关信息,函数返回一个数组。

官方文档介绍stat - Perldoc 浏览器

my($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat($file_name);

介绍几个比较重要的含义:

  • $dev和$ino
    • 文件所在设备的编号和文件的inode编号。
  • $mode
    • 文件的权限位集合,还包含其他信息位。低9位是linux的权限位。
  • $nlink
    • 文件或目录的硬连接数。
  • $uid和$gid
    • 以数值形式表示文件拥有者的用户ID和组ID
  • $size
    • 以字节为单位的文件大小
  • $atime,$mtime和$ctime
    • 三种时间戳,一个32位的整数,表示从1970年开始的秒数。
    • 访问时间(atime):访问时间记录了文件最后一次被读取的时间。每当文件被读取时,其访问时间戳就会被更新。这对于某些应用程序来说是有用的,例如日志审计或跟踪文件的访问频率。
    • 修改时间(mtime):修改时间记录了文件内容最后一次被修改的时间。当文件的内容(数据)被修改时,其修改时间戳就会被更新。这对于确定文件的最后修改时间非常有用。
    • 更改时间(ctime):更改时间记录了文件元数据最后一次被更改的时间。元数据是与文件相关的非数据信息,例如文件的权限、所有者或文件类型等。当这些元数据属性发生变化时,其更改时间戳就会被更新。

先看下使用内置函数获取修改时间的代码

#! /bin/perl -w
use strict;
use warnings;
use File::Find;
use File::Basename;my $time = (stat("./logs/1.txt"))[10];
print "$time\n";

运行结果如下:

[fengbh@VM-16-14-centos perl_stat]$ ./check_logs.pl 
1703579691

二、使用File::stat

File::stat会覆盖内置的系统函数,它以类的方式提供类似内置函数stat的功能。

官方文档File::stat - by-name interface to Perl’s built-in stat() functions - Perldoc Browser

使用类的方式获取修改时间的代码如下:

#! /bin/perl -w
use strict;
use warnings;
use File::Find;
use File::stat;my $time = stat("./logs/1.txt")->mtime;
print "$time\n";

运行结果如下:

[fengbh@VM-16-14-centos perl_stat]$ ./check_logs.pl 
1703579691

三、在File::Find中使用

这里使用内置函数的方式实现。

#! /bin/perl -w
use strict;
use warnings;
use File::Find;my $dir = "./logs";
find(\&process_files, $dir);sub process_files{return if !-f $_;#debugprint "\$_ = $_\n";print "\$File::Find::name = $File::Find::name\n\n";#get mtimemy $mtime = (stat($File::Find::name))[10];die "Can't stat file;$!\n" if !defined($mtime);# debugprint "mtime = $mtime\n";
}

运行结果:

[fengbh@VM-16-14-centos perl_stat]$ ./check_logs.pl 
$_ = 3.txt
$File::Find::name = ./logs/3.txtCan't stat file;No such file or directory

运行发现报错,找不到文件。但是传给stat函数的文件路径名是正确的。

这是因为find函数会改变程序执行的当前目录,或者可以理解为process_files函数是在$dir目录下运行的

这就是报错的原因,$File::Find::name是相对于初始执行目录的路径,$_才是相对于$dir的路径。

将代码修改为:

#! /bin/perl -w
use strict;
use warnings;
use File::Find;my $dir = "./logs";
find(\&process_files, $dir);sub process_files{return if !-f $_;#debugprint "\$_ = $_\n";print "\$File::Find::name = $File::Find::name\n\n";#get mtimemy $mtime = (stat($_))[10];die "Can't stat file;$!\n" if !defined($mtime);# debugprint "mtime = $mtime\n";
}

执行结果如下:

[fengbh@VM-16-14-centos perl_stat]$ ./check_logs.pl 
$_ = 3.txt
$File::Find::name = ./logs/3.txtmtime = 1703577429
$_ = 1.txt
$File::Find::name = ./logs/1.txtmtime = 1703579691
$_ = 2.txt
$File::Find::name = ./logs/2.txtmtime = 1703577426

执行结果正确

参考文献

  1. 官方文档介绍stat - Perldoc 浏览器
  2. 官方文档File::stat - by-name interface to Perl’s built-in stat() functions - Perldoc Browser
  3. 《perl语言入门》
http://www.yayakq.cn/news/207569/

相关文章:

  • 重庆互联网网站建设天津团购鲜花的网站建设
  • 工程房地产行业一条龙网站模板下载网站织梦模板
  • 网站开发软件网站开发公司网站维护和更新属于哪个部门
  • 上海企业建设网站报价网站建设header
  • 镇江建设质量监督站网站首页优化排名
  • 如何做网站的管理后台参考消息网国内新闻
  • 专门用来查找网址的网站wordpress菜单手机显示下拉
  • 广东建网站营销型网站建设xywlcn
  • 怎样利用网站做推广南宁免费网站建站模板
  • 用花生做网站做网站网
  • 蚌埠市重点工程建设管理局网站济南莱芜又出新情况了
  • 静态网站的建设模板招聘求职网站html模板
  • 黄石本地做网站的网站公司云建站怎么样
  • 电脑做系统网站harry louis做受网站
  • 高明网站建设报价wordpress上传图片x
  • 3合一网站快速优化seo软件
  • 专业的企业智能建站比较好专业商铺装修设计
  • wordpress绑定网站外链
  • 成都网站建设qghl小型网站开发费用
  • 网站建设用到的算法成都市城乡建设网站
  • 如何建立自己免费网站江门网站建设联系电话
  • 聊城正规网站建设设计公司公司网站怎么更新
  • 做网站怎么变现市场调研分析报告
  • 网站php怎么做的天猫网站建设的目标
  • 健康管理公司网站建设网站开发 jz.woonl
  • 文案写作网站怎么申请免费企业邮箱账号
  • 有哪些做电子商务的网站百度排行榜风云榜小说
  • 网站开发项目方案书网站seo关键词排名查询
  • 新浪网站制作怎么自己在电脑上做网站
  • 广告公司寮步网站建设价钱洛阳网络运营公司