http://qs321.pair.com?node_id=689781


in reply to Re^2: Open in for loop/array structure
in thread Open in for loop/array structure

yet the code worked on the first run through (the error version with filehandles included) and not on subsequent iterations, but I'm happy it works.

You weren't using file handles. As already explained, you were using glob. And glob in scalar context acts as an iterator. The first time it's called, it returns the first match. The second time it's called, it returns the second match. And so on. When it's done, it returns undef. I've demonstrated that earlier in this thread.

The first time you called <$FH[$k]> (when $k==0), it returns the first result for $k==0.
The second time you called <$FH[$k]> (when $k==1), it returns the second result for $k==0 (undef).

but from then ($k>0) on I get an error that says "print() closed on filehandle OUT at isotopes-p7.perl line 14"

You told print to output to OUT (select (OUT);), but you closed OUT. Personally, I would remove the call to select and change
print "$BU[$i-1] $MA1[$i-1] $MA2[$i-1]\n";
to
print OUT "$BU[$i-1] $MA1[$i-1] $MA2[$i-1]\n";
I don't like using select. As you've encountered first hand, it introduces problems too easily.

Replies are listed 'Best First'.
Re^4: Open in for loop/array structure
by igotlongestname (Acolyte) on Jun 03, 2008 at 17:56 UTC
    ikegami, Thanks for the very particular explanation, as that helps it make sense to me. I didn't understand what it meant by me using "glob", being that I'm quite limited in my understanding. Thanks for taking the time, it makes a lot more sense now. I had read what you wrote earlier, it just didn't all make sense since I'm Perl ignorant in a lot of things. Thanks again! ~Jack
      Sorry, I didn't mean to imply you hadn't read them. I just meant to tie what I was saying to the relevant posts in the thread to let you know from where I was coming or to where I was leading.