943,763 Members | Top Members by Rank

Ad:
  • Perl Discussion Thread
  • Unsolved
  • Views: 616
  • Perl RSS
Jun 29th, 2009
0

array problem - help!

Expand Post »
Ok, I am about to pull all my hair out. I have written many many perl scripts and have done it all pretty much. All of a sudden, I have hit a real problem, and I DON'T know why!

I am doing a very simple array declaration by reading a text file into an array.
Perl Syntax (Toggle Plain Text)
  1. open (FILE, $file_var);
  2. my @contents=<FILE>;
  3. close(FILE);

Pretty simple stuff, huh!? I have used this same routine hundreds of times. But for some reason, declaring the array with "my" is resulting in an empty array! If I just declare it with "@contents=<FILE>", it works fine! Why on earth is this happening? I even declared another array using the same format in the same SCRIPT, and it works fine, but this particular array is turning up empty EVERY time!

I hope someone can help me!

Derek
Similar Threads
Reputation Points: 10
Solved Threads: 0
Light Poster
derekn is offline Offline
45 posts
since May 2005
Jun 29th, 2009
0

Re: array problem - help!

- did you actually open the file?
- does the file you actually opened contain any data?
- does another approach to reading the same file yield data?

3 lines out of context, and an information-free story doesn't help.
Team Colleague
Reputation Points: 5862
Solved Threads: 950
Posting Sage
Salem is offline Offline
7,164 posts
since Dec 2005
Jun 29th, 2009
0

Re: array problem - help!

Click to Expand / Collapse  Quote originally posted by Salem ...
- did you actually open the file?
>>Yes, file exists, returns true with "if (-e $file_var)"

- does the file you actually opened contain any data?
>>Yes

- does another approach to reading the same file yield data?
>>If I just declare it with "@contents=<FILE>", it works fine!

3 lines out of context, and an information-free story doesn't help.
>>Not out of context at all...this is "THE SCRIPT".
It's a simple open-file-and-read-contents-into-array script. The file is a TEXT file, there is at LEAST one line of data in the file, and the path to the file is valid. The "problem" is declaring it with "my", and again, I don't understand why, when I have done it thousands of times this exact way before.
Reputation Points: 10
Solved Threads: 0
Light Poster
derekn is offline Offline
45 posts
since May 2005
Jun 29th, 2009
0

Re: array problem - help!

OK this is getting stupider by the moment.

I set path like so: $path_to_file="path/file.txt";

If the file exists (need to verify that the file exists before continuing), then read the data into the array, otherwise create the file:

Perl Syntax (Toggle Plain Text)
  1. if (-e $path_to_file)
  2. {
  3. open (FILE, $path_to_file) or die;
  4. my @contents=<FILE>;
  5. close(FILE);
  6. }
  7. else
  8. {
  9. open(FILE, >$path_to_file);
  10. close(FILE);
  11. }

Tada! The array is EMPTY!

However, if i remove the "if exists" check from around the routine to read data into array, it works! Why!?
Last edited by derekn; Jun 29th, 2009 at 2:11 am.
Reputation Points: 10
Solved Threads: 0
Light Poster
derekn is offline Offline
45 posts
since May 2005
Jun 29th, 2009
0

Re: array problem - help!

Well the 'my' exists inside a { } scope, so I guess it goes out of scope when the block exits.
Team Colleague
Reputation Points: 5862
Solved Threads: 950
Posting Sage
Salem is offline Offline
7,164 posts
since Dec 2005
Jun 29th, 2009
0

Re: array problem - help!

Click to Expand / Collapse  Quote originally posted by Salem ...
Well the 'my' exists inside a { } scope, so I guess it goes out of scope when the block exits.

Yep, thats probably the reason.

Perl Syntax (Toggle Plain Text)
  1. my @contents = ();
  2. if (-e $path_to_file)
  3. {
  4. open (FILE, $path_to_file) or die "$!";
  5. @contents=<FILE>;
  6. close(FILE);
  7. }
  8. print "$_\n" for @contents;
Reputation Points: 246
Solved Threads: 67
Practically a Posting Shark
KevinADC is offline Offline
898 posts
since Mar 2006

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Perl Forum Timeline: Perl Newby Question
Next Thread in Perl Forum Timeline: Shutting down VMs on a host in order





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC