Mr. Shawn H. Corey wrote:
On Mon, 2008-08-04 at 20:47 -0400, Mr. Shawn H. Corey wrote:
On Tue, 2008-08-05 at 01:33 +0200, rafailowski wrote:
Yes, without argument, the error is normal :
$ perl test.pl
Use of uninitialized value in hash element at
/usr/local/share/perl/5.10.0/Log/StdLog.pm line 57.
Use of uninitialized value in string at test.pl line 25.
But with an argument like this :
$ perl test.pl --log-level=info
Use of uninitialized value in hash element at
/usr/local/share/perl/5.10.0/Log/StdLog.pm line 57.
info
level => $cmd_args_ref->{"log_level"} stay undef and
print $cmd_args_ref->{"log_level"}; return the good value.
I don't understand why in : use Log::StdLog {...}, the value of
$cmd_args_ref->{"log_level"} stay always undef???
Sorry, I was thinking about the problem correctly. Try:
#!/usr/bin/perl
use Getopt::Long;
use Log::StdLog;
my %cmd_args = ();
my $cmd_args_ref = \%cmd_args;
GetOptions(
"log-level=s" => \$cmd_args{"log_level"},
);
sub log_format {
my ($date, $pid, $level, @message) = @_;
return "[$date][$level]: " . join(q{}, @message);
};
Log::Stdlog::import( {
format => \&log_format,
file => "$0.log",
level => $cmd_args_ref->{"log_level"},
} );
Oops, try this instead:
Log::Stdlog::import {
format => \&log_format,
file => "$0.log",
level => $cmd_args_ref->{"log_level"},
};
print $cmd_args_ref->{"log_level"};
__END__
This re-runs the import function after the program has started.
--
Just my 0.00000002 million dollars worth,
Shawn
"Where there's duct tape, there's hope."
"Perl is the duct tape of the Internet."
Hassan Schroeder, Sun's first webmaster
Thx but adding __END__ return me this error, anyway the problem is solve
with a BEGIN block (cf.Rob Dixon).
$ perl test.pl --log-level=debug
Name "main::STDLOG" used only once: possible typo at
/usr/local/share/perl/5.10.0/Log/StdLog.pm line 51
Thx again.
rafailow.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/