需要从ftp目录下载最新的.txt文件并保存

时间:2013-06-17 20:15:47

标签: perl

基本上我需要下载每天更新和更改名称的txt文件并在Excel中打开它。我的问题是我正在为MAC做这个,我找不到VBA的必要模块(据我所知)

所以我使用PERL脚本来实际下载文件,然后我将创建一个VBA脚本来打开最新的文件。我已成功使用net:ftp模块实际下载文件,按日期搜索的最佳方法是什么,只下载最新的文件?另外,获取是更好的选择吗? ftp站点不需要凭据。

#!/usr/bin/perl
use Net::FTP;
use strict;
use warnings;

my $ftp = Net::FTP->new("ftp.site", Debug => 0)
 or die;

$ftp->login("anonymous",'-anonymous')
 or die, $ftp->message;

$ftp->cwd("/public/doc/cor/")
 or die;

$ftp->get("20130614c.txt")
 or die , $ftp->message;

$ftp->quit;

2 个答案:

答案 0 :(得分:2)

由于您的文件名是基于日期的,您可以这样做:

$ftp->get( [sort($ftp->ls)]->[-1] )

因为那将是你最新的文件...

答案 1 :(得分:1)

如果你总是可以根据当天查看名称,那么只需创建一个今天日期的格式化字符串:

my($sec, $min, $hour, $mday, $mon, $year) = localtime(time);
$year += 1900;
$mon += 1;

my $today = sprintf("%04d%02d%02d", $year, $mon, $mday);

现在根据您的惯例获得文件名:

$ftp->get("${today}c.txt")

如果您需要当前日期以外的日期,则可以使用日期数学库来计算所需日期并相应地对其进行格式化。我个人总是使用Date::Calc

当然,如果ftp主机上不存在该文件,请确保正常处理错误。