Используя PERL, я пытаюсь войти на FTP-сервер, загрузить все файлы из определенного каталога, а затем переместить все эти файлы в другой каталог на сервере.Sed Regex в Perl Script
Это мой код до сих пор:
open(my $LFTP,'|-', "lftp -u $ftpuser,$ftppwd -e open $ftpserver") or die "Cannot open lftp: $!";
print $LFTP <<"END";
mirror $remoteFiles $datadir
renlist $remoteDir | "sed 's#\(.*\)#mv \"\1\" \"outgoing/archive\/\"#'" > list && source list && !rm list
END
close($LFTP) or die; # die unless lftp exit code is 0
файлы загрузить правильно, но они не будут двигаться. Я считаю, что проблема связана с командой sed.
Файл темп создан под названием «список» выглядит следующим образом:
dir1/di2/file1.csv
dir1/di2/file2.csv
dir1/di2/file3.csv
dir1/di2/file4.csv
Хотя это должно быть похожим, что:
mv "dir1/di2/file1.csv" "outgoing/archive/"
mv "dir1/di2/file2.csv" "outgoing/archive/"
mv "dir1/di2/file3.csv" "outgoing/archive/"
mv "dir1/di2/file4.csv" "outgoing/archive/"
Похоже, что СЭД регулярное выражение не работает правильно. Однако, если я нахожу ту же самую команду непосредственно на терминале LFTP, она работает нормально.
Не могли бы вы рассказать мне, что не так с моим регулярным выражением, и почему он не будет работать при выполнении скрипта perl?
Спасибо заранее за вашу помощь ....
Это было бы намного проще писать и читать, если бы вы использовали один из многих FTP-модулей Perl. [Net :: FTP] (http://metacpan.org/module/Net::FTP) был распространен как основной модуль с Perl v5.7.3. Мне также интересно, почему вы не загружаете файлы туда, где хотите, в первую очередь? – Borodin
Спасибо. Я не думал об этом, но это выглядит интересно. – r1pster