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


Yes, the first line of the CSV contains field names, sorry for not mentioning that.

Thank you for the recommendations. I had not tested for the existence of the file or the assertion that the first line is field names because this is a CSV that I made myself to use with this program. It will only be modified when the customer opens new shops. I will follow your recommendations.

What I'm trying to get to with the program is on one hand to have an array with each product, store & quantity, taken from the EDI file, and on the other to have one array listing store numbers of each type.

I then plan to go through the "product,store,quantity" array and make a sum of totals per product for each store type (i.e. THSB01 for li type stores = 30, THSB01 for ff type stores = 15, etc.). This is because I need a different price label format for each store type.

Would it help if I posted dummy store.csv and po.edi files?

If I put the code for the CSV file by itself and run it, it does what I want it to do (i.e. list of store numbers in two arrays). The problem only happens when I try to integrate that subroutine into the rest of the program.

Thanks!
  • Comment on Re^2: Cannot work on second file after reading first file.

Replies are listed 'Best First'.
Re^3: Cannot work on second file after reading first file.
by davido (Cardinal) on Feb 28, 2014 at 16:48 UTC

    Did you try running it with the additions I proposed? They are tests that attempt to get to the bottom of why your while() loop seems to never be entered. That's relevant information.


    Dave


      I added the code you posted and the program ran the same as before.

      I'm not sure how to set the $ENV{MYSCRIPT_DEBUG} to true. I tried adding the following line before your code, but I guess that's not it?
      my $ENV{MYSCRIPT_DEBUG} = 1;

      Can you tell me how to set the variable to true?

        Your "environment" is the shell from which you run the script. If you're using bash, you would say, "export MYSCRIPT_DEBUG=1" on the command line, for example. Then run the script. On Windows, I think it's "set MYSCRIPT_DEBUG 1", or "setx MYSCRIPT_DEBUG 1".

        You could eliminate the "if $ENV{MYSCRIPT_DEBUG};" test altogether, but then you would have to remember to remove the line of code later on, once things are working as they should. This is just a convenient way to turn on and off debugging behavior without altering your code repeatedly (which provides opportunities for creating new bugs).


        Dave