Недавно я столкнулся с некоторой проблемой с длинным работающим сценарием (и работал) и пришел к выводу, что для решения этой проблемы должен быть более эффективный подход.Perl unzip/динамическое именование и обработка ошибок
Один раз в день файл отправляется по электронной почте на общую учетную запись. Postfix передает его на этот скрипт для обработки, по сути, он просто ищет любые вложения файлов и сохраняет их. 99.9% времени есть только 1 вложение, zip-файл, и он отправляется с расширением .DOC, чтобы получить его через спам-фильтр.
Иногда, однако, файл отправляется как 'file.DOC' other times 'file.doc', а файл других пользователей 'file.doc.zip' или 'file.DOC.zip'. В каждом случае есть только 1 файл прилагается, но для того, чтобы справиться с этими сценариями моего сценарий выглядит следующим образом:
if (</tmp/*.doc>){
unzip '</tmp/*.doc>' => '</media/win/#1.txt>'
or die "unzip failed: $UnzipError\n";
}
if (</tmp/*.DOC>){
unzip '</tmp/*.DOC>' => '</media/win/#1.txt>'
or die "unzip failed: $UnzipError\n";
}
есть ли лучший способ справиться с этим возможными условиями с именованием файлов, которые я не могу контролировать? Это могут быть .zip, .ZIP, .DOC, .doc или что-то еще, что человек решает ввести этот день, несмотря на четкие инструкции. (Разве это не всегда так? »Обычно я знаю, насколько велика будет файл - могу ли я разархивировать его на основе этого или найти другой способ не-filename?
Когда корпус может меняться, я обычно достигаю 'lc' и сравниваю это. – squiguy