Can I use perl to run a telnet or ftp session?

Try the Net::FTP, TCP::Client, and Net::Telnet modules (available from CPAN). http://www.cpan.org/scripts/netstuff/telnet.emul.shar will also help for emulating the telnet protocol, but Net::Telnet is quite probably easier to use..

If all you want to do is pretend to be telnet but don't need the initial telnet handshaking, then the standard dual-process approach will suffice:

    use IO::Socket; 	    	# new in 5.004
    $handle = IO::Socket::INET->new('www.perl.com:80')
	    || die "can't connect to port 80 on www.perl.com: $!";
    $handle->autoflush(1);
    if (fork()) { 	    	# XXX: undef means failure
	select($handle);
	print while <STDIN>;    # everything from stdin to socket
    } else {
	print while <$handle>;  # everything from socket to stdout
    }
    close $handle;
    exit;

Back to perlfaq8