in reply to Here Document Terminator Problems

Don't you need a semi-colon after EODATA? *shrugs*

------
We are the carpenters and bricklayers of the Information Age.

Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

Replies are listed 'Best First'.
Re(2): TW2002
by dmmiller2k (Chaplain) on Feb 18, 2002 at 20:07 UTC
    Don't you need a semi-colon after EODATA? *shrugs*

    Not only DON'T you need one, you CANNOT have one. If you do, then the line containing EODATA that perl is looking for will not be found.

    Check out Why don't my <<HERE documents work?.

    The end tag for a Here Doc must appear as the only thing on the line terminating the Here Doc.

    As grep points out, the most likely cause of the problem is whitespace after the EODATA on the line preceding close OUT; (2nd to last line).

    Update: for clarification, I mean you cannot have a semicolon on the line with the end tag, 'EODATA', as in:

    print OUT <<EODATA; <-- given this, as stated sub warps { @out }; 1; EODATA; ^ | +--- semicolon here won't work

    Of course, putting it on the next line is syntactically legal, and of course works.

    dmm

    If you GIVE a man a fish you feed him for a day
    But,
    TEACH him to fish and you feed him for a lifetime
Re: Re: TW2002
by chromatic (Archbishop) on Feb 18, 2002 at 20:02 UTC
    The semicolon is only necessary when declaring that a heredoc is present -- that is, the first instance. However, a newline after the marker is usually a good idea. (Windows machines often have trouble disambiguating these tokens without some help.)