sub untaint { my $val = shift; $val =~ s/[^\w.-]/_/g; # tr/A-Za-z0-9.-/_/c is faster but less easy to read for some $val =~ m/([^\w.-])/; my $clean_taint_free_val = $1; return $clean_taint_free_val; }