-command => \&sub_opt,
####
-command => sub { \&sub_opt },
##
##
#!/usr/bin/perl
#for example the following is wrong
my $row = 0;
my $column = 0;
for (my $i = 9; $i >= 0; $i--)
{
$button{$i} = $mw->Button(-text => "$i",
-width => '3',
-height => '1',
-command => &numpress($i))
->grid(-row => $row,
-column => $column);
$column++;
if($column > 2){$column = 0; $row++;}
}
MainLoop;
#######################################################
# Now the problem is here:
-command => &numpress($i))
# The thing being assigned to the "-command" attribute needs
# to be an anonymous subroutine, a reference to a named subroutine,
# or else a reference to an array whose elements are:
# named_subroutine_ref, arg1(, arg2 ...) -- in other words,
# either of the following would be the right way to do what you want:
-command => sub { numpress( $i ) }
# or
-command => [ \&numpress, $i ]
#The way you had it written, your subroutine is actually being called
#when the Button is being created, and Perl/Tk is trying to use the
#return value of the sub as the value for "-command" -- not good.