I believe I know one area you were talking about but I am not certain of the second. Removing all the comments, is this what you mean?
if ( defined $default ) {
my $stderr;
close STDERR;
open(STDERR, ">", \$stderr);
my $grabkey_thread = threads->create(\&grabkey);
$grabkey_thread->detach();
for ( my $i = 0; $i <= $timeout; $i++ ) {
sleep 1;
}
my $pos = index( uc( $choices ), uc( $default ) ) + 1;
print uc( $default ) . "\n";
exit $pos;
} else {
grabkey();
}
=>
if ( defined $default ) {
my $stderr;
close STDERR;
open(STDERR, ">", \$stderr);
my $grabkey_thread = threads->create(\&grabkey);
$grabkey_thread->detach();
for ( my $i = 0; $i <= $timeout; $i++ ) {
sleep 1;
}
my $pos = index( uc( $choices ), uc( $default ) ) + 1;
print uc( $default ) . "\n";
exit $pos;
}
grabkey();