use Prompt::Timeout; use constant TIMEOUT => 5; ... if (defined($size_remote)) { my $default = ($size_remote == $size_local) ? 'N' : 'Y'; my $answer = prompt('Overwrite?', $default, TIMEOUT); upload($_) if $answer =~ /^Y/i; # overwrite } else { upload($_); } #### while (defined ($_ = readdir($eh))) #### while (readdir($eh)) #### my $pattern = join '|', map "(?:$_)", @filetypes; #### my $pattern = join '|', @filetypes; ... while (readdir($eh)) { next if /~$/ || -d || !/$pattern/i; ...