in reply to Re: Reading into array with sscanf
in thread Reading into array with sscanf

Thanks for all the replies. The examples all work and I even understand them (after a bit of reading). However, I'm seeing some weirdness in my actual application. The c_speed variable is being used in a Tk widget as follows:

my $cs_e1 = $seg1_f->Entry(-textvariable => \$c_speed[0], -width => +4, -validate => 'all', -vcmd => \&validate_s +peed, -font => $med_font)->g +rid( -row => 0, -column => +1, -sticky => "w"); sub validate_speed{ my $val = shift; $val ||= 0; #get alphas and punctuation out if( $val !~ /^\d+$/ ){ return 0 } if (($val >= 0) and ($val <= 10)) {return 1} else{ return 0 } }

When I use split I can print c_speed to the terminal and the values are there, the same as when I use my sscanf lines

$rstring = <$lfh>; ($c_speed[0], $c_speed[1], $c_speed[2], $c_speed[3]) = sscanf("%d %d + %d %d", $rstring);

BUT, the Tk Entry widget only sees the new values when using sscanf. When I use split the variable still retains it's old value. I'm assuming this is some widget weirdness - can anyone explain please?

Replies are listed 'Best First'.
Re^3: Reading into array with sscanf
by tybalt89 (Monsignor) on Jul 16, 2024 at 16:36 UTC

    Can you show some of the values that do not update?

      As shown in the example I just posted the variable $c_speed[0] in the Entry widget doesn't update when the "split" version of load file routine runs, but it *does* update when the sscanf version runs. The entry box itself works. The whole application is 500 lines so I don't want to post that here.

        So what is the value in $c_speed[0] when update does not occur?

        Perhaps you should try temporarily removing the validation check and see what gets displayed in the widget.