#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use Tk; local $Data::Dumper::Indent = 0; my $mw = MainWindow->new(-title => "Tk / Eval"); my $expr = ''; my $input = $mw->Entry(-width => 50, -textvariable => \$expr); my $output = $mw->Listbox(-width => 50, -height => 15); my $data = { mw => $mw, input => $input, output => $output, expr => \$expr, }; $input->bind('', [\&evalCode, $data]); MainLoop(); sub evalCode { my (undef, $data) = @_; my $retval = eval ${$data->{expr}}; ${$data->{expr}} = ''; my $dumped = Dumper $retval; $dumped =~ s/^\$VAR\d+ = //; $data->{output}->insert("end", $dumped); return; }