Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用perl在SFTP中查找文件的年龄?_Perl_Net Sftp - Fatal编程技术网

如何使用perl在SFTP中查找文件的年龄?

如何使用perl在SFTP中查找文件的年龄?,perl,net-sftp,Perl,Net Sftp,我正在连接SFTP并使用perl下载该文件。我想下载1小时前创建/修改的文件 下面是代码片段 use strict; use Net::SFTP::Foreign; my $sftp_conn=Net::SFTP::Foreign->new('test.sftp.com',user=>'test',password=>'test123'); my $a1 = Net::SFTP::Foreign::Attributes->new(); my $a2 = $sftp_con

我正在连接SFTP并使用perl下载该文件。我想下载1小时前创建/修改的文件

下面是代码片段

use strict;
use Net::SFTP::Foreign;
my $sftp_conn=Net::SFTP::Foreign->new('test.sftp.com',user=>'test',password=>'test123');
my $a1 = Net::SFTP::Foreign::Attributes->new();
my $a2 = $sftp_conn->stat('/inbox/tested.txt') or die "remote stat command failed: ".$sftp_conn->status;
$sftp_conn->get("/inbox/tested.txt","/tmp"));

在这里,我想检查文件修改的时间,并以小时为单位进行计算。

您的思路是正确的。对连接对象调用
->stat
,将返回一个对象。然后,您可以在其上调用
->mtime
,以获取修改时间

my $attr = $sftp_conn->stat('/inbox/tested.txt') 
    or die "remote stat command failed: ".$sftp_conn->status;
print $attr->mtime;
不需要先创建空对象。你不需要下面这行。您可能从文档中的概要中复制了它,但这只是为了展示使用该模块的不同方式。你可以删除它

我不知道
mtime
将采用哪种格式,因此我无法告诉您如何进行比较。文档中、模块代码中或测试中都没有这方面的内容


一个快速的谷歌“YYYYMMDDhhmmss”,但这可能不是正确的。试试看。如果是unix时间戳,您可以将其与
time
time-3600
进行比较,但如果是字符串,则需要对其进行解析。是一个非常有用的模块,Perl内核提供了这个模块。

mtime
atime
都在Unix时代;自历元(UTC 1970年1月1日00:00:00)以来经过的秒数。我将在文档中添加一条说明。@salva sweet,谢谢!:)很高兴直接听到模块作者的声音。
my $a1 = Net::SFTP::Foreign::Attributes->new();