#!/usr/bin/perl

use POE qw(Component::Client::Telnet);

my $self = POE::Component::Client::Telnet->new(
#	debug => 1,
	'package' => 'Net::Telnet::Cisco',
	telnet_options => [
		Timeout => 10,
		Prompt => '/bash\$ $/'
	], # could put something here, or omit it
);

POE::Session->create(
	inline_states => {
		_start => \&_start,
		callback => \&callback,
		opened => \&opened,
		logged_in => \&logged_in,
		who => \&who,
	},
);

sub _start {
	# preferred way
	#$self->open({ event => 'opened' },"sparky");
	# alternative way
	$self->yield(open => { event => 'opened' } => "sparky");
}

sub opened {
	# Wait for first prompt
	# $self->waitfor({ event => 'cont' },'/continue:.*$/');
	$self->login({ event => 'logged_in' },"username","password");
	# alternative way
	$_[KERNEL]->post($self->session_id() => login => { event => 'logged_in' } => "username" => "password");
}

sub logged_in {
	$self->cmd({ event => 'who', 'wantarray' => 1 },"who");
}

sub who {
	print @{$self->{result}};
	
	$self->shutdown;
}

$poe_kernel->run();

exit;


syntax highlighted by Code2HTML, v. 0.9.1