... snippet ...
# here, you untainted the argv[1], but not the hash value!
if ($argv[1] =~ /^(.+\@.+\..+)$/) {
$argv[1] = $1;
say "Looking while Untainted...";
say "EMAIL: $argv[1]";
say __LINE__, ": argv is ", (tainted($argv[1])?'':'not ', "tainted");
# edit: uncomment here to untaint the hash value as well
#$data{'email'} = $argv[1];
}
say "argv is ", (tainted($argv[1])?'':'not ', "tainted");
say "data{email} is ", tainted($data{'email'})?'':'not ', "tainted";
... snippet ...
__END__
####
C:\usr\local\share\PassThru\perl\perlmonks>perl -T pm11135636.pl "" foo@bar.com
Content-type: text/plain
Perl: 5.030000
Database: SQLite 3.26.0
Driver: SQLite
DBI Ver: 1.642
DBD::SQLite Ver: 1.62
Email is tainted
Tainted...
EMAIL: foo@bar.com
Untainted...
EMAIL: foo@bar.com
argv is not tainted
data{email} is tainted
CRID: 5
TEST: 5
####
C:\usr\local\share\PassThru\perl\perlmonks>perl -T pm11135636.pl "" foo@bar.com
Content-type: text/plain
Perl: 5.030000
Database: SQLite 3.26.0
Driver: SQLite
DBI Ver: 1.642
DBD::SQLite Ver: 1.62
Email is tainted
Tainted...
EMAIL: foo@bar.com
Untainted...
EMAIL: foo@bar.com
argv is not tainted
data{email} is not tainted
CRID: 5
TEST: 5