[Moscow.pm] Net::FTP, FTP Transfer Status, $ftp->hash , фильтрация STDOUT - как получить число вместо решёток?

Evgeniy Kosov evgeniy на kosov.su
Ср Янв 12 08:02:07 PST 2011


On 12.01.2011 18:21, Dmitry Arsentiev wrote:
>> Мм.. Подсунуть вместо STDOUT свой хэндл, которые считает решётки, вместо
>> того, чтобы их выводить?
>
> Евгений, вот этот код выводит решётки:
>       $ftp->hash(\*STDOUT, $BYTES_PER_HASH);
>       $ftp->get( $zip_archive_name ) or warn "failed getting
> ftp-archive $zip_archive_name $? $!\n";
>       $ftp->quit;
>
> А вот этот код не выводит решётки:
>       local *FOO;
>       $ftp->hash(\*FOO, $BYTES_PER_HASH);
>       print<\*FOO>;
>       $ftp->get( $zip_archive_name ) or warn "failed getting
> ftp-archive $zip_archive_name $? $!\n";
>       $ftp->quit;

Да, не выводит :)

> Вывод: не всё так просто.

Ещё раз ммм...


package My::ProgressBar;

sub TIEHANDLE {
     my $class = shift;
     bless {}, $class;
}

sub PRINT {
     my $self = shift;
     $self->{count} ||= 1;
     print 1024 * $self->{count}++ . " bytes received\n"
}

package main;

use Net::FTP;

tie *bar, 'My::ProgressBar';

my $ftp = Net::FTP->new("ftp.microsoft.com", Debug => 0);
$ftp->login("anonymous","-anonymous\@");
$ftp->cwd("MISC");
$ftp->hash(\*bar);
$ftp->get("NBFCP.TXT");
$ftp->quit;

-- 
С уважением,
Евгений Косов


Подробная информация о списке рассылки Moscow-pm