Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Cannot replace non-existent sub (main::shell)


Автор: quasi 30.7.2008, 10:16
Вот такая проблемка...
Код

my $override = Sub::Override->new(shell => sub {
#$override->replace (shell => sub {
    my $ssh = shift;
    my $cmgr = $ssh->channel_mgr;
    my $channel = $ssh->_session_channel;
    $channel->open;
    $channel->register_handler(SSH2_MSG_CHANNEL_OPEN_CONFIRMATION, sub {
        my($channel, $packet) = @_;
        my $r_packet = $channel->request_start('pty-req', 0);
        my($term) = $ENV{TERM} =~ /(\w+)/;
        $r_packet->put_str($term);
        $r_packet->put_int32(0) for 1..4;
        $r_packet->put_str("");
        $r_packet->send;
        $channel->{ssh}->debug("Requesting shell.");
        $channel->request("shell", 0);
    }); # <<-- 45 строка
$override->replace;

В  Net::SSH::Perl (БСд) и  Net::SSH::W32Perl ( венда)  говорит ошибок нет, но ломается  на 45 строке.
# perl -c tst_5
tst_5 syntax OK
# perl tst_5
Cannot replace non-existent sub (main::shell) at tst_5 line 45


Автор: sir_nuf_nuf 30.7.2008, 14:45
Эм... написано же все вроде:
Cannot replace non-existent sub (main::shell) at tst_5 line 45

Эту ошибку генерирует Sub::override при попытке заменить несуществующую процедуру.
Разберитесь что вы хотите заменить и почему его нет =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)