szabgab has asked for the wisdom of the Perl Monks concerning the following question:
In general having "use warnings" on is a good idea, but at least in one case it makes code unnecessary complex. Specifically, when I would like to print out debugging messages. For examples this code:
the first call to debug() will generate a warning "Use of uninitialized value $y in concatenation..." The second call to debug() does not generate any warning, but it seems to be too complex. Another solution I was thinking about is probably even more complex:use 5.010; use strict; use warnings; my $x = 23; my $y; debug("x='$x' y='$y'"); debug(sprintf "x='%s' y='%s'", ($x // ''), ($y // '')); sub debug { say shift }
Another solution might be this:use 5.010; use strict; use warnings; my $x = 23; my $y; debug({x => $x, y => $y}); sub debug { my ($d) = @_; my $s = join ' ', map { sprintf("$_='%s'", ($d->{$_} // '')) } sor +t keys %$d; say $s; }
Do you see any problems with the suggested solutions? Do you have any other suggestions?use 5.010; use strict; use warnings; my $x = 23; my $y; debug("x='%s' y='%s'", $x, $y); sub debug { my ($fmt, @params) = @_; printf "$fmt\n", map { $_ // '' } @params; }
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: use warnings and debug messages
by Eily (Monsignor) on Mar 06, 2017 at 12:43 UTC | |
Re: use warnings and debug messages
by Athanasius (Archbishop) on Mar 06, 2017 at 13:30 UTC | |
Re: use warnings and debug messages
by salva (Canon) on Mar 06, 2017 at 14:50 UTC | |
Re: use warnings and debug messages
by LanX (Saint) on Mar 06, 2017 at 15:18 UTC | |
Re: use warnings and debug messages
by 1nickt (Canon) on Mar 06, 2017 at 12:48 UTC | |
by szabgab (Priest) on Mar 06, 2017 at 13:14 UTC | |
by ww (Archbishop) on Mar 06, 2017 at 14:29 UTC | |
by stevieb (Canon) on Mar 06, 2017 at 14:30 UTC | |
by szabgab (Priest) on Mar 07, 2017 at 19:48 UTC | |
by LanX (Saint) on Mar 08, 2017 at 01:50 UTC | |
by stevieb (Canon) on Mar 08, 2017 at 00:52 UTC | |
by afoken (Chancellor) on Mar 06, 2017 at 18:30 UTC | |
by LanX (Saint) on Mar 07, 2017 at 03:49 UTC | |
Re: use warnings and debug messages
by GrandFather (Saint) on Mar 07, 2017 at 20:26 UTC |
Back to
Seekers of Perl Wisdom