Printing to a file

I'm trying to parse an html file and print ascii to an outside file. When I do the following, nothing happens and no file is generated. I can get it to print to the console if I print directly without an outputfile. See anything wrong?

# Define module to use
use HTML::Parser();
# Create instance
$p = HTML::Parser->new(start_h => [\&start_rtn, 'tag'],
                text_h => [\&text_rtn, 'text'],
                end_h => [\&end_rtn, 'tag']);
# Start parsing the following HTML string

my $outputfile = "converted.html";
open (OUTPUTFILE, ">outputfile");

$p->parse('

//SEVERAL LINES OF HTML

');

sub start_rtn {
# Execute when start tag is encountered
    foreach (@_) {
       print OUTPUTFILE "===\nStart: $_\n";
    }
}
sub text_rtn {
# Execute when text is encountered
    foreach (@_) {
       print OUTPUTFILE"\tText: $_\n";
    }
}
sub end_rtn {
# Execute when the end tag is encountered
    foreach (@_) {
       print OUTPUTFILE "End: $_\n";
    }
}

close (OUTPUTFILE);





THANKS!


dprasadAsked:
Who is Participating?
 
ozoConnect With a Mentor Commented:
(sorry, temorary blindness)
Did you want to write to "outputfile" or "converted.html" ?
0
 
ozoCommented:
#what happens if you try
open (OUTPUTFILE, ">$outputfile") or die "Can't open $outputfile $!";
0
 
ozoCommented:
You might also try opening the file before starting the parser
0
Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

 
davorgConnect With a Mentor Commented:
Try checking the results of the "open" call. Also turn on "use warnings" so you get warnings if you try to write to a file that hasn't been opened successfully.
0
 
PaulS_IIIConnect With a Mentor Commented:
I think ozo is correct. from what I understan of this, your OUTPUTFILE variable is your handle to the opened file. So in your line open(OUTPUTFILE, ">outputfile"); you are openeing a file simply named outputfile. Search your system for that file name, I bet you'll find it. If you want to right to converted.html then you need to put the $ infront of outputfile, like this open(OUTPUTFILE, ">$outputfile");  This will write to the converted.html file
0
 
ITcrowConnect With a Mentor Commented:

my $outputfile = "converted.html";
open (OUTPUTFILE, ">outputfile");

Like previous poster suggested, change the lines mentioned above to:

my $outputfile = "converted.html";
open (OUTPUTFILE, ">$outputfile") || die "Failed to open $outputfile. $!\n";

Then expect a file called converted.html generated.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.