Category: Miscellaneous
Author/Contact Info
Description: This program reads all *.pl files in a given directory and then outputs the script followed by the results to an html file. Any suggestions for improvements, or added robustness would be much appreciated.
foreach my $file(@files){
    my ($filestart)=$file=~/(.*?)\./;
    open INPUT, $file;
    my $source;
    while (<INPUT>){
    close INPUT;
    open FILE, ">$filestart.html";
    print "<HTML><BODY bgcolor=ffffff>\n";
    print "<PRE><CODE>";
    print $source;
    print "</CODE"."></PRE>";
    print "<B>Program results:</B>";
    print "<PRE>";
    eval $program;
    print "</PRE>";
    print "</BODY></HTML>";
    close FILE;
Replies are listed 'Best First'.
Re: Code + Results to HTML
by dws (Chancellor) on Feb 25, 2001 at 04:27 UTC
    If you insist on filtering the source yourself, rather than using routines in, you'll need to add:     $source=~s/&/&amp;/g;
Re: Code + Results to HTML
by TheoPetersen (Priest) on Feb 25, 2001 at 03:48 UTC
    Since you are going to stuff the whole file into a scalar anyway, let Perl do that for you:
    my $source; { open INPUT, $file; local $/ = undef; $source = <INPUT>; close INPUT; }
    You caught the need to escape the tag characters in the code, but there are some cases that will slip through. CGI's escapeHTML function can filter the whole file at once; I'm sure there are other implementations too.