DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   Perl (http://www.daniweb.com/forums/forum112.html)
-   -   array problem - help! (http://www.daniweb.com/forums/thread200379.html)

derekn Jun 29th, 2009 1:22 am
array problem - help!
 
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.
open (FILE, $file_var);
my @contents=<FILE>;
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

Salem Jun 29th, 2009 1:34 am
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.

derekn Jun 29th, 2009 1:55 am
Re: array problem - help!
 
Quote:

Originally Posted by Salem (Post 902659)
- 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.

derekn Jun 29th, 2009 2:10 am
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:

if (-e $path_to_file)
{
open (FILE, $path_to_file) or die;
my @contents=<FILE>;
close(FILE);
}
else
{
open(FILE, >$path_to_file);
close(FILE);
}

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!?

Salem Jun 29th, 2009 2:14 am
Re: array problem - help!
 
Well the 'my' exists inside a { } scope, so I guess it goes out of scope when the block exits.

KevinADC Jun 29th, 2009 2:39 am
Re: array problem - help!
 
Quote:

Originally Posted by Salem (Post 902710)
Well the 'my' exists inside a { } scope, so I guess it goes out of scope when the block exits.


Yep, thats probably the reason.

my @contents = ();
if (-e $path_to_file)
{
open (FILE, $path_to_file) or die "$!";
@contents=<FILE>;
close(FILE);
}
print "$_\n" for @contents;


All times are GMT -4. The time now is 5:49 am.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC