I'll admit my grasp on IO layers is fuzzy at best. However, I'm trying to read some CSV files using :crlf. I could just double chomp the lines when needed, or set $/ = "\r\n" (which I worry might have unintended consequences), but I'd much rather figure out how to do this with layers, as I think it will help in the long run. Anyway, my problem is that when reading files using the diamond operator, :crlf seems to work fine, but when opening named files later in the program, it is not working. Like so:

use strict; use warnings; use open IN => ':crlf'; while (<>) { die ("Carriage return in $ARGV") if (/\r/); } open (INPUT, "myfile.csv") or die ("Can't open myfile.csv"); while (<INPUT>) { die ("Carriage return in myfile.csv") if (/\r/); }

All the files entered on the command line are CSV files that have CRLF line endings, as does "myfile.csv". But it makes it through the first while loop and dies at the 2nd on line 1 of "myfile.csv". I tried making it open (INPUT, "<:crlf", "myfile.csv") just in case it was somehow losing the original use flag, and it made no difference.


In reply to crlf layer working on diamond operator, but not filehandle reads by rebugger

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.