my %image_data_for = ( A => { name => 'ImageA', data => $LtrA, }, B => { name => 'ImageB', data => $LtrB, }, ); # Image A holder in Main Window $mw->Label(-text => 'Image A:')->pack(); my $cvsA = $mw->Canvas(-background=>'yellow', -height => 40, -width => 40)->pack(); # Image B holder in Main Window $mw->Label(-text => 'Image B:')->pack(); my $cvsB = $mw->Canvas(-background=>'green', -height => 40, -width => 40)->pack(); # Set Image A create_canvas_image($cvsA, $image_data_for{A}); # Button to make Image B $mw->Button( -text => 'Add Letter B', -command => [\&create_canvas_image, $cvsB, $image_data_for{B}], )->pack(-pady => 5); MainLoop; sub create_canvas_image { my ($canvas, $image_data) = @_; my $img = $mw->Photo($image_data->{name}, -data => $image_data->{data}); $canvas->create('image', 30, 30, -image => $img); }