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

Dmitry Arsentiev dmarsentev на gmail.com
Ср Янв 12 04:27:08 PST 2011


> http://www.google.ru/search?hl=ru&q=windows+perl+pipe+fork
>
> А тут есть примерчик того, как можно эмулировать open('-|'):
>  http://perldoc.perl.org/perlfork.html

Спасибо, Евгений.
Я попробовал сделать, как там написано.
Действительно, замена  -| работает.
Но то, чего я хотел добиться, а именно:
чтобы вместо решёток ##### , выдаваемых методом $ftp->hash ,
получать количество этих решёток (или какое-то пропорциональное
количеству решёток число),
- этого сделать у меня не получилось.

Код, приведённый ниже, работает под WinXP и выдаёт:
parent
count = 1
child
Done

Но если <\*BAR> заменить на getc( \*BAR ) ,
то не печатает Done.


sub pipe_from_fork ($) {
     my $parent = shift;

     pipe( $parent,  my $child  ) or die "sub pipe_from_fork - can not
pipe $!\n";
     my $pid = fork();
     die "fork() failed: $!" unless defined $pid;
         if ( $pid ) {
             print "parent\n";
             close $child;
         } else {
             print "child\n";
             close $parent;
             open( STDOUT, ">&=" . fileno($child) ) or die "sub
pipe_from_fork - can not open STDOUT $!\n";
         }# fi
     $pid;
}#bus  pipe_from_fork


    local *BAR;
     if ( pipe_from_fork( \*BAR ) ){
         # parent
         my $count = 1;
         print "count = $count\n";
             while ( <\*BAR>  ){
                print $BYTES_PER_HASH * $count, " bytes received\n";
                $count++;
             }# elihw
         print "Done\n";
         close \*BAR;
     }else{  # child
             $ftp->hash(\*STDOUT, $BYTES_PER_HASH);
             $ftp->get( $zip_archive_name ) or warn "failed getting
ftp-archive $zip_archive_name $? $!\n";
             $ftp->quit;
             exit(0);
     }#fi


11 января 2011 г. 17:44 пользователь Evgeniy Kosov <evgeniy на kosov.su> написал:
> On 11.01.2011 17:21, Dmitry Arsentiev wrote:
>>
>> PS
>> Полный рецепт http://www.perlmonks.org/index.pl?node_id=242130
>> - см.  код ниже - не работает, ругается на -| , говорит, что нет такой
>> переменной "-".
>
> http://www.google.ru/search?hl=ru&q=windows+perl+pipe+fork
>
> А тут есть примерчик того, как можно эмулировать open('-|'):
>  http://perldoc.perl.org/perlfork.html
>
> --
> С уважением,
> Евгений Косов
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>


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