#!/usr/bin/perl -wT use strict; my $foo = join('',@ARGV); if (is_tainted($foo)) { print "\$foo is tainted. Attempting to launder\n"; my $pattern = qr(^\d{3}(-|\s+)?\d{3}(-|\s+)?\d{4}$); $foo = untaint($foo, $pattern); }else{ print "\$foo is not tainted!!\n"; } sub is_tainted { my $check = shift; return !eval { $check++, kill 0;1;}; } sub untaint { my ($foo, $pattern) = @_; if ($foo =~ /($pattern)/) { $foo = $1; print "\$foo has been laundered!!\n"; return $foo; }else{ print "Unable to launder \$foo\n"; return $foo; } }