in reply to how to use validatecommand for string checking

It gets tricky on the validate command, because it dosn't do exactly what you think. This example shows what it actually does, and gives a possible solution. Some clever regex guru may be able to make a regex, but this works.
#!/usr/bin/perl use warnings; use strict; use Tk; my $mw = MainWindow->new(); my $content = 'go '; my $entry = $mw->Entry( -textvariable => \$content , -validate => 'key' , -validatecommand => sub { my $newvalue = shift; my $changedchars = shift; my $currentvalue = shift; my $index = shift; my $type = shift; print "newval-> $newvalue\nchangedchars-> $changedchars\n". "curvalue-> $currentvalue\n index-> $index\n"; if( ($index == 0) and ($newvalue ne 'g')){return 0} if( ($index == 1) and ($newvalue ne 'go')){return 0} if( ($index == 2) and ($newvalue ne 'go ')){return 0} return 1; }, -invalidcommand => sub { print "ERROR.\n", $mw->bell() } )->pack() ; $entry->icursor(3) $entry->focus; MainLoop;

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