in reply to Re: Capturing errors from 3-arg pipe open in ActivePerl 5.020
in thread [SOLVED] Capturing errors from 3-arg pipe open in ActivePerl 5.020
Thank you. That certainly makes sense. I feel though I should probably back up and clarify the root problem though.
I am working with a collection of PDF files and am using the pdftohtml.exe program to convert the PDF into an XML stream in order to extract text of interest with XML::Twig:
open (my $XML, "-|", "e:\\path\\to\\pdftohtml.exe -xml -zoom 1.4 -stdo +ut $PDF_FILE") or die "pdftohtml failed:\n$!\n$^E"; my $t = XML::Twig->new( twig_handlers => { '/pdf2html/pagetext[(@top >= 180 and @top <= 190) and (@left > += 100 and @left <= 111)]' => \&RouteTo, '/pdf2html/pagetext[(@top >= 215 and @top <= 225) and (@left > += 260 and @left <= 270)]' => \&InvoiceSort, '/pdf2html/page' => sub { $_[0]->purge; 1; }, # free memory af +ter every page }, comments => 'drop', # remove any comments empty_tags => 'normal',# empty tags = <tag/> ); $t->parse($XML); close $XML;
The problem is that if I fat-finger the open command (e.g. type "-zom" instead "-zoom" in the command arguments), or if "$PDF_FILE" could not be found, the program merrily continues on its way, unaware that $XML is undefined. I've been working around this by wrapping the "$t->parse" in an eval block to catch this, but I was wondering if there was a better way.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Capturing errors from 3-arg pipe open in ActivePerl 5.020
by BrowserUk (Patriarch) on Nov 16, 2015 at 20:10 UTC | |
by ateague (Monk) on Nov 16, 2015 at 21:03 UTC | |
|
Re^3: Capturing errors from 3-arg pipe open in ActivePerl 5.020
by NetWallah (Canon) on Nov 16, 2015 at 19:51 UTC | |
by ateague (Monk) on Nov 16, 2015 at 20:14 UTC | |
|
Re^3: Capturing errors from 3-arg pipe open in ActivePerl 5.020
by dasgar (Priest) on Nov 16, 2015 at 19:51 UTC | |
by ateague (Monk) on Nov 16, 2015 at 20:03 UTC |