AnyEvent-ReadLine-Gnu

 view release on metacpan or  search on metacpan

bin/rltelnet  view on Meta::CPAN


my ($rw, $rbuf, $tw);

$rw = AE::io $fh, 0, sub {
   my $len = sysread $fh, $rbuf, 1024, length $rbuf;

   if ($len > 0) {
      if ($rbuf =~ /\x0a$/) {
         undef $tw;
         $rl->hide;
         print $rbuf;
         $rl->show;
         $rbuf = "";
      } else {
         $tw ||= AE::timer 0.2, 0, sub {
            undef $tw;
            $rl->hide;
            print $rbuf;
            print "...\n";
            $rl->show;
            $rbuf = "...";
         };
      }
   } elsif (defined $len) {
      print "$rbuf\nEOF received, exiting.\n";
      exit 0;
   } else {
      # we assume we never get EAGAIN, sorry
      print "$rbuf\nERROR: $!\n";
      exit 1;
   }
};

#$rl->set_signals;
$rl->unbind_key (9);

$rl->add_defun (telnet_escape => sub {
   print "$rbuf\nEscape detected, exiting.\n";
   exit 0;
}, 0x1d);

$| = 1;

$quit->recv;

__END__

=head1 NAME

   rltelnet - connect to a socket with readline frontend

=head1 SYNOPSIS

   rltelnet www.nethype,de:80
   rltelnet www.google.com 80
   rltelnet unix/ /path/to/socket

=head1 DESCRIPTION

This program connects to a socket using AnyEvent::Socket::tcp_connect, prints
everything it receives from the socket and offers a readline editing interface
to send lines to the socket.

This is very remotely what telnet does when used on a non-telnet socket,
except that it uses readline and supports more types of socketsd (e.g.
unix domain sockets).

=head1 AUTHOR, CONTACT, SUPPORT

 Marc Lehmann <schmorp@schmorp.de>
 http://software.schmorp.de/pkg/AnyEvent-ReadLine-Gnu.html

=cut



( run in 0.701 second using v1.01-cache-2.11-cpan-13bb782fe5a )