sub transform {
my ($data,$log_fh) = @_;
# Localize the log filehandle so all subroutines can see it
local *LOG_FH = $log_fh;
...
foo($bar);
}
sub foo {
my ($bar) = @_;
print LOG_FH "Processing $bar.\n";
...
}
####
sub transform {
my $data = shift;
local $log_fh = shift;
...
foo($bar);
}
sub foo {
my ($bar) = @_;
print $log_fh "Processing $bar.\n";
...
}
####
our $log_fh;
sub transform {
my $data = shift;
print $log_fh "Processing data $data.\n";
foo("bar");
}
sub foo {
my ($bar) = @_;
print $log_fh "Processing $bar.\n";
}
sub main {
open ( local $log_fh, '>', 'test.txt' ) or die "Couldn't open log file\n";
transform( "data", $log_fh );
}
main();