in reply to Re: Break perl foreach loop
in thread Break perl foreach loop

I'm not sure if these are the problem you're looking for, but they might be confusing the issue.

In the section

elsif ( $x =~ /[^\w\s]/ ) { $x = ""; }
if $x begins with a single word-character followed by whitespace, $x is set to an empty string. However, all of the if's in the block following if ( $key eq 'Data' ), which is inside the foreach loop, are looking for a non-empty value of $x.

Also, in the section

if ( ( $x !~ /^\d\d\/\d\d\/\d\d/ ) && ( $x != "Patient" ) )
did you intend to say  $x !~ m/^Patient/ instead?

--
Your left-hand veeblefetzer is calibrated to the wrong frammistan coefficient. Pass me that finklegruber.

Replies are listed 'Best First'.
Re^3: Break perl foreach loop
by pvecchio (Initiate) on Mar 03, 2009 at 18:34 UTC
    The data I'm parsing is difficult. The presentation text of the document is referenced by PTX. A PTX::TRN contains data and is the only piece of data that is surrounded by quotes. That's why I test for it early in the loop.

    Here we can see the first two pieces of data are "Office" and "Hours". Ugly way to search I know.
    The ( $x != "Patient" ) helps me keep from putting in everything else (like "Office") into the xml node Description.
    PTX – Presentation Text Data PTX::STO – Set Text Orientation Orientation 0000 WrapDirection 2d00 PTX::AMI – Absolute Move Inline 6480 PTX::AMB – Absolute Move Baseline 1982 PTX::SCFL – Set Coded Font Local 3 PTX::TRN – Transparent Data "Office" PTX::AMI – Absolute Move Inline 7079 PTX::TRN – Transparent Data "Hours"
    When I put this print in the match condition I want to break the loop, the print comes along at the right place, it's just that the loop continues.
    if ( $x =~ m/^Patient/ ) { print "matched here "; #goto WID; last WID; }
    Tried the goto (even going to the originating sub routine, but to no avail. Here's the output:
    <Page id="2"> <DATE>06/09/08</DATE> <DESCRIPTION>3 PHARMACY</DESCRIPTION> <AMOUNT>36.00</AMOUNT> <DATE>06/09/08</DATE> <DESCRIPTION>1 LABORATORY</DESCRIPTION> <AMOUNT>35.00</AMOUNT> <DATE>06/09/08</DATE> <DESCRIPTION>1 EMERGENCY SVCS</DESCRIPTION> <AMOUNT>1,159.00</AMOUNT> <DATE>06/09/08</DATE> <DESCRIPTION>3 PULMONARY FUNCTION</DESCRIPTION> <AMOUNT>246.00</AMOUNT> <DATE>06/09/08</DATE> <DESCRIPTION>3 THERAPEUTIC SERV</DESCRIPTION> <AMOUNT>111.00</AMOUNT> <TOTAL>$1,587.00</TOTAL> matched here <DATE>10/08/08</DATE> <DATE>06/09/08</DATE> <DESCRIPTION>70247259</DESCRIPTION> <DESCRIPTION>000000840423</DESCRIPTION> <TOTAL>$68.54</TOTAL> </Page>