Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

TK Entry - Validating Input

by Dirk80 (Pilgrim)
on Mar 06, 2013 at 13:53 UTC ( #1022011=perlquestion: print w/replies, xml ) Need Help??

Dirk80 has asked for the wisdom of the Perl Monks concerning the following question:


I want to validate the input of an entry widget. Only positive hexadecimal digits shall be allowed.

Here my code:

#!/usr/bin/perl use strict; use warnings; use Tk; use Data::Dumper; my $mw = new MainWindow; $mw->title ("Perl/Tk - Entry Valdiation"); my $entry1 = $mw->Entry ( '-width' => 30, '-validate' => 'key', '-validatecommand' => sub { print Dumper( \@_ ); + return 0 unless( $_[0] =~ m/^[0-9a-fA-F] ++/ ) } ); $entry1->pack(); MainLoop;

After the input of a valid character I can never remove it again. The first character is always there then. In the dumped output I can see that the character should be gone, but it is still visible in the entry.

Am I doing something wrong? Is it a bug?

Thanks alot for your help.



Replies are listed 'Best First'.
Re: TK Entry - Validating Input
by Crackers2 (Parson) on Mar 06, 2013 at 14:49 UTC

    Your regex m/^[0-9a-fA-F]+/ doesn't match the empty string, so when you try to remove the last character your validation fails and the remove is disallowed.

    Try return 0 unless( $_[0] =~ m/^[0-9a-fA-F]*/ ) instead.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1022011]
Approved by marto
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (1)
As of 2022-10-01 05:15 GMT
Find Nodes?
    Voting Booth?
    I prefer my indexes to start at:

    Results (126 votes). Check out past polls.