in reply to use warnings and debug messages

Hi Gabor

> Do you see any problems with the suggested solutions?

Yes, if a value is undef I want to see undef in the debug output, not an empty string.

And I want to be able to distinguish the string "undef" from undef.

Consequently you should use Data::Dump which already handles those cases and more

#extended usage with names print Data::Dumper->Dump([$foo, $bar], [qw(foo *ary)]);

of course that's cumbersome, so you want to put it in a custom debug routine, like your hash syntax

But of course you might not really want to repeat the var name.

Then you can use an approach like

Data::Dumper::Lazy

use Data::Dumper::Lazy; @a = 1..5; dmp {@a};

Contrary to other solutions relying on source filter or Padwalker this will also work within string eval.

Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Je suis Charlie!