#!/usr/bin/perl -T use strict; use warnings; # taken from Programming Perl, 3rd edition, p 561 sub is_tainted { my $arg = shift; my $nada = substr($arg, 0, 0); local $@; eval { eval "# $nada" }; return (length($@) != 0) ? 'tainted' : 'not tainted'; } my %hash = (); open FILE, $0 or die "cannot open $0: $!"; while (my $line = ) { chomp $line; warn is_tainted($line); $hash{$line} = is_tainted($line); } close FILE; foreach my $key (keys %hash) { warn is_tainted($key); } #### tainted at ./taint_test.pl line 19, line 1. tainted at ./taint_test.pl line 19, line 2. tainted at ./taint_test.pl line 19, line 3. tainted at ./taint_test.pl line 19, line 4. tainted at ./taint_test.pl line 19, line 5. tainted at ./taint_test.pl line 19, line 6. tainted at ./taint_test.pl line 19, line 7. tainted at ./taint_test.pl line 19, line 8. tainted at ./taint_test.pl line 19, line 9. tainted at ./taint_test.pl line 19, line 10. tainted at ./taint_test.pl line 19, line 11. tainted at ./taint_test.pl line 19, line 12. tainted at ./taint_test.pl line 19, line 13. tainted at ./taint_test.pl line 19, line 14. tainted at ./taint_test.pl line 19, line 15. tainted at ./taint_test.pl line 19, line 16. tainted at ./taint_test.pl line 19, line 17. tainted at ./taint_test.pl line 19, line 18. tainted at ./taint_test.pl line 19, line 19. tainted at ./taint_test.pl line 19, line 20. tainted at ./taint_test.pl line 19, line 21. tainted at ./taint_test.pl line 19, line 22. tainted at ./taint_test.pl line 19, line 23. tainted at ./taint_test.pl line 19, line 24. tainted at ./taint_test.pl line 19, line 25. tainted at ./taint_test.pl line 19, line 26. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25. not tainted at ./taint_test.pl line 25.