Devel::Dwarn(3)
π¦ NAME π¦
okay so bestie, this is the Devel::Dwarn(3) manual page, and itβs literally the glow-up combo of warn and Data::Dumper::Concise. β¨ You get warns, you get concise dumps, you get main-character debugging energy. Itβs giving βwhy arenβt you using this already?β fr fr. Not me already planning to Dwarn everything ππ
β¨ SYNOPSIS β¨
Hereβs the starter pack, bestie:
use Devel::Dwarn;
return Dwarn some_call(...)
and that is equivalent to:
use Data::Dumper::Concise;
if (wantarray) {
my @return = some_call(...);
warn Dumper(@return);
return @return;
} else {
my $return = some_call(...);
warn Dumper($return);
return $return;
}
but shorter. periodt. π
If you need to force scalar context on the value, this:
use Devel::Dwarn;
return DwarnS some_call(...)
is equivalent to:
use Data::Dumper::Concise;
my $return = some_call(...);
warn Dumper($return);
return $return;
If you need to force list context on the value, this:
use Devel::Dwarn;
return DwarnL some_call(...)
is equivalent to:
use Data::Dumper::Concise;
my @return = some_call(...);
warn Dumper(@return);
return @return;
If you want to label your output, try DwarnN:
use Devel::Dwarn;
return DwarnN $foo
which is equivalent to:
use Data::Dumper::Concise;
my @return = some_call(...);
warn '$foo => ' . Dumper(@return);
return @return;
If you want to output a reference returned by a method easily, try $Dwarn:
$foo->bar->{baz}->$Dwarn
which is equivalent to:
my $return = $foo->bar->{baz};
warn Dumper($return);
return $return;
If you want to immediately die after outputting the data structure, every Dwarn subroutine has a paired Ddie version, so just replace the warn with die. For example:
DdieL 'foo', { bar => 'baz' };
π TIPS AND TRICKS π
π global usage π
Instead of always just doing:
use Devel::Dwarn;
Dwarn ...
we tend to do:
perl -MDevel::Dwarn foo.pl
(and then in the perl code:)
::Dwarn ...
That way, if you leave them in and run without the use Devel::Dwarn, the program will fail to compile and you are less likely to check it in by accident. It also allows that much less friction to add debug messages. ππ
π¦ method chaining π¦
One trick thatβs super useful when youβre doing method chaining is this:
my $foo = Bar->new;
$foo->bar->baz->Devel::Dwarn::DwarnS->biff;
which is the same as:
my $foo = Bar->new;
(DwarnS $foo->bar->baz)->biff;
π SEE ALSO π
This module is really just a shortcut for Data::Dumper::Concise::Sugar β check it out for the more complete documentation. highkey obsessed with a good shortcut, iykyk. π
source tea: User Contributed Perl Documentation Β· version: perl v5.42.0 Β· date: 2017-05-16 β¨ bye bestie, go dump something cute! π«ΆπΈ
π¦ where this page comes from
- opensuse-leap 16.0: perl-Data-Dumper-Concise 2.023-bp160.1.11 Β· Artistic-1.0 or GPL-1.0+
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms