perl如何获取ls的时间项?

perl如何获取ls的时间项?

各位学习同仁,大侠,高手:

      本人是perl菜鸟:0,下面的功能不知怎么实现,请各位指点:
    将目录中时间最近的一个文件的时间项取出,和系统当前时间相减,取差值.
      如:目录 d
     1)  执行  ls -lt ,显示如下 t1
total 0
-rw-r--r--   1 test        test              0 Dec 21 10:11 f3        <--- 时间最近的文件时间
-rw-r--r--   1 test        test              0 Dec 21 09:10 f2
-rw-r--r--   1 test        test              0 Dec 21 08:08 f1
-rw-r-----   1 test        test           667 May 14  2007 oratest.java
     
     2) 执行 date, 显示如下  t2
Fri Dec 21 10:12:10 EAT 2007
     
     3)取两个时间的差值,精确到分钟.  value=t2-t1

    还请各位知道的人,多share:)
哪一步你会的,写出方法来或者代码来
怎么取出ls中那个时间,perl中有什么特别的时间函数吗?
比如,我可以用ls -lt|awk 'NR==2{print $6,$7,$8}' 取出f3的时间
Dec 21 10:11
但是这个怎么转换成时间呢
1.这个可以考虑用 正则 或者 split 函数

2.这需要自己想想转换的算法
-M
stat 不是就可以抓到时间了...
perldoc -f stat
perldoc -f -C
给你个思路
my $str = 'drwxrwxrwx   5 daemon  wheel      512B Sep  7 01:12 FreeBSD';

my @item = split(/\s+/,$str);

print "@item[5] _ @item[6] _ @item[7]\t@item[8]\n";
可以用环境变量 LC_TIME




export LC_TIME=zh_CN.UTF-8
找到解决办法了,很好用地,比正则表达式方便多得去了。。。。

1。先取文件的时间项
my $lcommand = 'ls -lt /文件名 "|awk 'NR==2{print \$6,\$7,\$8\";\",\$9}'";

2。调用数据库sql,把时间带入sql,用sql的函数进行字符到时间的转换,然后与当前的时间相减。
my $scommand ='sqlplus user/passwd@oradb @/home/scripts/time.sql '.$outtime.' '.$intime.'
my @sresults = `$scommand`;
my $tcount =$sresults[14];

其中time.sql中这样写:
set verify off  
select round((to_date('&1'||'&2'||'&3','monddhh24:mi')-to_date('&4'||'&5'||'&6','monddhh24:mi'))*24*60) from dual;
quit;