I agree with zentara; it looks like you are feeding insert a hash. See the following test code:
use warnings;
use strict;
use Tk;
my %w;
my %hash = ( 'key1' => 'value1', 'key2' => 'value2' );
$w{mw} = MainWindow->new;
$w{text} = $w{mw}->Text->pack;
$w{text}->insert('end', %hash);
$w{text}->insert('end', "\n\n" );
while ( my ($key, $value) = each %hash ){
$w{text}->insert('end', "$key => $value\n");
}
MainLoop;
Update: (after actual code snippet was posted)
You are setting yourself up for trouble by accessing private internal data structures directly. Try using the accessor methods instead.
$txt->insert('end', $worksheet->get_cell($row, $col)->value());
Update 2:blarg. fixed broken hash iterator in demo code.