1. #!c:/perl/bin/perl -w 2. $|++; 3. use strict; 4. use CGI::Simple; 5. use HTML::Template; #### 7. my $q = CGI::Simple->new; 8. my $t = HTML::Template->new( filehandle => *DATA ); #### 10. my @ext = qw( pl css htm html shtm shtml ); 11. my $file = $q->param('file'); 12. my $fh; #### 14. if ( 15. ($file =~ /[^a-zA-Z0-9_\-\.]/) or 16. ($file =~ /\.\./) or ($file eq '.') or 17. !(grep { $file =~ /\.$_\z/i } @ext) 18. !(-e $file) or 19. !(open $fh, '<', $file) or 20. ) { #### 21. $t->param( 22. title => 'My File Viewer', 23. file => 'Script Error', 24. code => 'An error occured while preparing the file for display.' 25. ); 26. } 27. 28. else { 29. $t->param( 30. title => 'My File Viewer', 31. file => $file, 32. code => do { local $/; <$fh> } 33. ); 34. } #### 36. print $q->header, $t->output; 37. exit;