in reply to -tk questions

If you really want the "entry" widget, you could use the Tk::JComboBox. Loading and saving the array from/to __DATA__ is up to you. There is Inline::Files which would allow you to load(and write) different DATA segments.
#!/usr/bin/perl use strict; use warnings; use Tk; use Tk::JComboBox; my @choices; my $index = 'IM'; foreach my $f ( 'A' .. 'Z' ) { foreach my $s ( 'A' .. 'Z' ) { push @choices, "$f$s"; } } print "@choices"; my $mw = MainWindow->new(); my $jcb = $mw->JComboBox( -relief => 'groove', # -popuprelief => 'groove', -mode => 'editable', -validate => 'match', -highlightthickness => 0, -choices => \@choices, -textvariable => \$index, -selectcommand => sub { print "Selected: $index\n"; } )->pack; MainLoop; #########################

Simple Inline Files

#!/usr/bin/perl use Inline::Files; print while <PEANUT>; print while <BUTTER>; __PEANUT__ Bing Bong Bang __BUTTER__ Foo Bar Baz

And to change a DATA segment

#!/usr/bin/perl use Inline::Files; use warnings; use strict; #open NUMBER, '+<'; #InlineFiles auto opens my $number = <NUMBER>; seek NUMBER, 0, 0; print "I am number $number\n"; print NUMBER ++$number; __NUMBER__ 0

I'm not really a human, but I play one on earth. Cogito ergo sum a bum