Использование Perl :: SFTP :: Foreign Я пытаюсь подсчитать количество файлов с определенным дескриптором файла.
В результате мы будем постепенно увеличивать число файлов во время команды переименования в коде.такой, что первый zip-файл переименовывается в filename.zip.bak, затем filename.zip.bak2, затем filename.zip.bak3
my $file = "filename.zip"
$reName = ".bak";
@rls = $sftp->ls('.', wanted => qr/$file.*/ );
$rls_size = @rls;
$fileReName = $file . $reName;
if ( $rls_size > 1 ) {
$fileReName = $fileReName . $rls_size ;
}
unless ( $sftp->rename($file, $fileReName) ) {
Print "Error Renaming $file to $fileReName. $@ $!\n");
}
Извините за форматирование.Код продолжает возвращать одну запись в массиве, чтобы не назначать число, превышающее 1, даже если есть 2 или более, которые обычно выбираются при подсчете.Что-то не так с требуемым оператором и форматированием заданного ожидания регулярного выражения?
Вот старый код Net :: FTP, который использовался для выполнения той же функции:
sub process_file($)
{ my $file = $_[0];
if($reName)
{
@rls = $ftp->ls($file."*");
$rls_size = @rls;
$fileReName = $file . $reName;
if($rls_size > 1){ $fileReName = $fileReName . $rls_size; }
unless ($ftp->rename($file,$fileReName))
{ PrintLog (0, "Error Renaming $file to $fileReName. $@ $!\n");
$error =101;
exit 101;
}else{ PrintLog (7, "Renamed File $file to $fileReName.\n"); }
}
else{
unless ($ftp->delete($file))
{ PrintLog (0, "Error deleting $file. $@ $!\n");
$error =101;
exit 101;
}else{ PrintLog (7, "Deleted $file.\n"); }
}
}