我正在使用Net::SFTP。我的目的是列出文件及其修改日期。我能够以UTC格式列出日期文件。我需要EDT格式。有没有可用的设置?
目前,我在Linux上使用Perl 5.
my $sftp = Net::SFTP->new($host, %args) or die "Cannot connect to $@";
$sftp->ls('.' , sub { print $_[0]->{longname}, "\n" });
答案 0 :(得分:0)
如果我的理解是正确的,列表的longName字段是服务器呈现的并且已过时/不建议使用。 SFTP为每个目录条目提供包含数据的结构,并在UTC中列出时间。
来自文档:
如果指定了$ subref,则对于目录中的每个条目,将调用$ subref并给出对具有三个键的散列的引用:filename,目录列表中条目的名称; longname ,像ls -l这样的“长”列表中的条目;和一个,一个Net :: SFTP :: Attributes对象,它包含条目的文件属性(atime,mtime,permissions等)。
因此,您需要获取 a 对象并使用其 atime 和 mtime 字段。一旦你拥有它们,如果你需要一个固定的时区,将它们转换为本地时区应该是微不足道的。