Is there a method for determining the currently selected filehandle? should
I always check for undef and open my filehandle before writing to it?

use strict;
use warnings;
use autodie qw (:all);

use My:CustomMod_with_FH_write;

open (my $FH, ">", "filename.txt");

my $var = My:CustomMod_with_FH_write->new;
my @array = $var->sub1(); #writes to it's FH, but returns me an array of
stuff
print $FH, "some stuff\n"; # works great.
while (@array) {
    chomp;
    my @array2 = $var->sub2($_);  #gets some new stuff in another array,
prints again to the module FH
    while (@array2) {
        chomp;
        my $thing = $var->sub3($_); # returns a scalar
        print $FH "$thing\n";
################################################# BOOM!?!?
    }
}


========

the last print always give me a ". . . . concatenate (.) to undefined
variable $FH near line . . . ." and I can't understand where I'm scoping
out and my $FH gets closed. Add the open below and it works. Granted this
is some dummy code, I'm not in the office right now to give specifics, but
sub calls to the module work fine. Write to the my filehandle works fine .
. . until I get to a certain level of nesting and then it bombs and I don't
understand why nor can I find a way to print the active filehandle. What am
I doing wrong? The module FH and my FH are different files in different
directories. I probably need to find a different way of doing what I'm
doing.

Should that BOOM always be:

if (undef $FH) {open (my $FH, ">>", "filename.txt");}
print $FH "$thing\n";
close $FH;

A friendly page in the fine manual to read. A nudge towards a llama or
camel reference would be appreciated. Several days show my googlefu to be
lacking. Where is my rookie mistake?

Matt

Reply via email to