LINUX.ORG.RU

перл, нид хелп


0

0

sub command {
no strict; # со стриктом не работает вообще.
use Net::SSH::Perl::Cipher;
use Net::SSH::Perl::Channel;
use Net::SSH::Perl::Constants qw( :msg2 );
    my $ssh = shift;
    my($cmd, $stdin) = @_;
    my $cmgr = $ssh->{channel_mgr};
    my $channel = $ssh->{_session_channel};
    $channel->{open};
    $channel->{register_handler}
(SSH2_MSG_CHANNEL_OPEN_CONFIRMATION, 
sub {

        my($channel, $packet) = @_;
        $channel->{ssh}->{debug}("Sending command: $cmd");
        my $r_packet = $channel->request_start("exec", 0);
        $r_packet->put_str($cmd);
        $r_packet->send;
        if ($stdin) {
            $channel->send_data($stdin);
            $channel->drain_outgoing;
            $channel->{istate} = CHAN_INPUT_WAIT_DRAIN;
            $channel->send_eof;
            $channel->{istate} = CHAN_INPUT_CLOSED;
        }
    }
)
#Use of uninitialized value in subroutine entry at C:\ro2.pl line 316.
#Undefined subroutine &main:: called at C:\ro2.pl line 316.
; ## 316 row
...etc...

Че ему не нравится?
anonymous

no strict; # со стриктом не работает вообще.

Если не работает со стриктом -- значит ты что-то делаешь не так. strict должен быть включён всегда -- это тебе любой перловщик скажет.

anonymous
()
Ответ на: комментарий от anonymous

тогда у меня вот такая ошибка...
Bareword "CHAN_INPUT_WAIT_DRAIN" not allowed while "strict subs" in use at D:\ro2.pl line 310.
Bareword "CHAN_INPUT_CLOSED" not allowed while "strict subs" in use at D:\ro2.pl line 312.

Нашел  способа решить подобную проблему, но мне они не подошли, может еще как-нибуть можно?
http://www.perl.com/pub/a/2001/01/begperl6.html

anonymous
()
Ответ на: комментарий от anonymous

Откуда ты вообще взял эти константы? Не могу их найти в документации из CPAN. Они только внутри реализации используются.

Где документацию читаешь? Вот тут посмотри официальную документацию http://search.cpan.org/search?query=Net%3A%3ASSH%3A%3APerl&mode=all

anonymous
()
Ответ на: комментарий от anonymous

Во-первых сравни версии.  Там, где ты показал -- версия от 2005-го года, а в CPAN актуальная -- середины 2006-го.

А во-вторых, даже там где ты показал, эти константы вот так вот импортируют:

use Net::SSH::Perl::Constants qw( :protocol :msg2
                                  CHAN_INPUT_CLOSED CHAN_INPUT_WAIT_DRAIN );

А ты их не импортируешь.

Всё-таки советую посмотреть актуальную документацию, вполне возможно там что-то кардинально поменяли, раз эти константы уже не упоминаются.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.