My personal favorite is Smart::Comments.
use strict;
use warnings;
# Enable special comments for debugging and reporting:
use Smart::Comments;
my $data_structure = {
a => [ 1, 2, 3 ],
b => [
{ X => 1, Y => 2 },
{
X => [ 1, 2, 3 ],
Y => [ 4, 5, 6 ],
Z => [ 7, 8, 9 ]
},
],
};
# the following is a "smart comment" which causes a dump of the expres
+sion, using Data::Dumper:
### $data_structure
Produces this output:
### $data_structure: {
### a => [
### 1,
### 2,
### 3
### ],
### b => [
### {
### X => 1,
### Y => 2
### },
### {
### X => [
### 1,
### 2,
### 3
### ],
### Y => [
### 4,
### 5,
### 6
### ],
### Z => [
### 7,
### 8,
### 9
### ]
### }
### ]
### }
Smart::Comments does much, much more than this, too.