use Net::Telnet; use Tk; use Data::Dumper; use XML::Simple; use strict; use warnings; my $tasks = XMLin("command.xml"); print Dumper($tasks); my $mw = MainWindow->new(); for (0..$#{@{$tasks->{"task"}}}) { $mw->Button(text => $tasks->{"task"}->[$_]->{"description"}, command => sub {pub($_)})->pack(); } MainLoop; sub pub { my $task_id = shift; print "task id = $task_id\n"; my $t = new Net::Telnet(timeout => 10, Prompt => '[AATS1]$'); $t->open("ofgaix2"); $t->login("rpts1", "aats1"); my @lines; my $cmds = $tasks->{"task"}->[$task_id]->{"command"}; for (0..$#{@{$cmds}}) { @lines = $t->cmd($cmds->[$_]->{"string"}); print @lines; } }