Как можно скачать через FTP все файлы с текущей датой в названии? - PullRequest
1 голос
/ 13 января 2009

У меня есть формат файла, который похож на "IDY03101.200901110500.axf". У меня есть около 25 похожих файлов, находящихся в хранилище ftp, и я хочу загрузить все эти похожие файлы только на текущую дату. Я использовал следующий код, который не работает, и считаю, что регулярное выражение неверно.

my @ymb_date = "IDY.*\.$year$mon$mday????\.axf";

foreach my $file ( @ymb_date) 
{

 print STDOUT "Getting file: $file\n";

 $ftp->get($file) or warn $ftp->message;

}

Любая помощь приветствуется.

EDIT:

Мне нужен файл всех текущих дней. использование ls -lt | grep "Jan 13" работает в окне UNIX, но не в сценарии Что может быть пустым регулярным выражением в этом сценарии?

Ответы [ 2 ]

3 голосов
/ 13 января 2009

Не похоже, что вы используете какое-либо регулярное выражение. Вы пытаетесь использовать буквенный шаблон в качестве имени файла для загрузки.

Возможно, вы хотите использовать ls метод Net :: FTP , чтобы получить список файлов и затем отфильтровать их.

foreach my $file ( $ftp->ls ) {
    next unless $file =~ m/$regex/;
    $ftp->get($file);
    }

Вам также могут понравиться ответы, в которых говорится о реализации mget для "Net :: FTP" в Perlmonks.

Кроме того, я думаю, что вы хотите регулярное выражение, которое находит четыре цифры после даты. В Perl вы можете написать это как \d{4}. ? - это квантификатор в Perl, поэтому четыре из них подряд не работают.

IDY.*\.$year$mon$mday\d{4}\.axf
1 голос
/ 13 января 2009

Я не думаю, что регулярные выражения работают так. Хотя с тех пор, как я начал работать с Perl, прошло много времени, поэтому я могу быть там далеко :)

Имеет ли ваш $ftp объект доступ к методу mget()? Если это так, может быть, попробовать это?

$ftp->mget("IDY*.$year$mon$mday*.axf") or warn $ftp->message;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...