Hi, I'm running into a Cach-22 with 'use strict', and filehandles.
I have a program which opens two log files at the beginning: open(INFLOG,">>$info_log") || die "Could not append to $info_log_file. Quitting.\n"; open(ERRLOG,">>$error_log") || die "Could not append to $error_log_file. Quitting.\n"; Then throughout the program, different subroutines print to the log files, e.g. in code sample A below, ERRLOG and INFLOG are declared at the start. A subroutine tries to pass 'ERRLOG' or 'INFLOG' to the 'log' subroutine as a parameter. With 'strict refs' in use, this code generates this error: L:\>test.pl Bareword "ERRLOG" not allowed while "strict subs" in use at L:\test.pl line 22. Execution of L:\test.pl aborted due to compilation errors. OK. I've tried a few things to work around this, but no matter what I've tried I just get an error that I can't do something with strict something-else (refs or subs) is in use. If I turn off strict it all just works, of course. Would someone please share how to solve this problem, while using the 'strict' directive? Thanks in advance, Ted CODE SAMPLE A START------------------------------------------------------ #!/usr/bin/perl use strict; use warnings; my $info_log = 'testinfo.log'; my $error_log = 'testerror.log'; open(INFLOG,">>$info_log") || die "Could not append to $info_log. Quitting.\n"; open(ERRLOG,">>$error_log") || die "Could not append to $error_log. Quitting.\n"; my $val = 1; &something($val); $val=2; &something_else($val); close ERRLOG; sub something { my ($val)[EMAIL PROTECTED]; my $bad = 1; my $good= 2; if ($val==$bad) { &log(ERRLOG,"Oh no! val $val is $bad, should be $good"); } } sub something_else { my ($val)[EMAIL PROTECTED]; my $bad = 1; my $good= 2; if ($val != $bad) { &log(INFLOG,"Great! val $val is not $bad"); } } sub log { my ($logfile,$msg)[EMAIL PROTECTED]; print $logfile "$msg\n"; } ------------------------------------------------------CODE SAMPLE A END -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>