in reply to Re: Using null filehandle
in thread Using null filehandle

Thanks for your reply,

Sorry I wasn't clear about where the lines were missing. They are missing at the end of the file, not randomly throughout.

I have narrowed the problem down to the handleSeps sub, which is the lion's share of the program. I will have more time today to dig into it a little more and pinpoint the exact problem.

I have turned buffering off with no change in behavior, and it looks like my program never exits the loop, because the file never closes, and my program hangs at the console. This is even more perplexing, because if I just use an explicit filehandle (ie $myfile = $ARGV[0]; open IN ">$myfile";) everything works as expected.

Thanks again,
digger

Replies are listed 'Best First'.
Re^3: Using null filehandle
by sgifford (Prior) on Jun 10, 2004 at 18:39 UTC
    Sometimes "hanging at the console" is really "trying to read from standard input". Since the primary difference between the code you have above (assuming you meant open IN "<$myfile") is that <> will read from multiple files, it's possible that @ARGV contains more than you expect. In particular a single - character, it will try to read from standard input.

    You can print out @ARGV to see what files are being opened, or you can test eof on ARGV to tell when one file has closed and the next has opened (see the documentation for eof for an example).

    And still, it seems that turning off buffering should have fixed the problem. What code did you use to do that? $|=1 wouldn't work, because that only affects buffering for the currently selected filehandle (generally STDOUT).