http://www.perlmonks.org?node_id=1076594


in reply to Cannot work on second file after reading first file.

The immediate problem is the undef $/; in open_po. Replace it with local ($/);

A couple notes on my process for debugging this:

First, I used Data::Dumper to dump the result of call $csv->getline_all to see the entire parse being returned. This verified the only thing being returned was the header row.

Then I commented out the call to open_po and saw that the file was not being parsed correctly. This meant the problem was some state being globally modifed in open_po.

Study of that sub lead to the problem

Replies are listed 'Best First'.
Re^2: Cannot work on second file after reading first file.
by 1straw (Novice) on Feb 28, 2014 at 19:06 UTC

    Thank you sn1987a! This solved the problem.

    I will learn to use Data::Dumper & read the debugger tutorial suggested as well.

    SUMMARY:

    1) A subroutine to open and read a CSV file worked fine in isolation but stopped working when integrated into larger script.

    2) The problem stemmed from an earlier subroutine (open_po) which globally modified the input record separator ($/) through: undef $/;

    3) The problem code was modified to change the state locally, according to sn1987a's post to: local ($/);

    4) This modification solved the problem.

    Thank you all for your help!