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 )