&defineOrder(\$widget1, \$widget2, \$widget3) #### sub defineOrder { for (my $i = 0; defined($_[$i+1]); $i++) { ${$_[$i]}->bind('', sub { ${$_[$i+1]}->focus } ); } ${$_[0]}->focus; } #### &defineOrder(qw/$widget1 $lwidget2 $widget3/); sub defineOrder { for (my $i = 0; defined($_[$i+1]); $i++) { my $evalString = $_[$i]."->bind( '', sub { ".$_[$i+1]."->focus } );"; print "$evalString\n"; eval $evalString; print "$@\n" if $@; } }