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