Krambambuli has asked for the wisdom of the Perl Monks concerning the following question:

Within BackupPC::Storage::Text, there is some code like
if ( exists($newConf->{$var}) ) { my $d = Data::Dumper->new([$newConf->{$var}], [*va +lue]); $d->Indent(1); $d->Terse(1); $d->Sortkeys(1); my $value = $d->Dump; $value =~ s/(.*)\n/$1;\n/s; $contents .= "\$Conf{$var} = " . $value; $done->{$var} = 1; }
This works fine for older versions of Data::Dumper, but fails for newer ones.

Replacing the line referring Data::Dumper with
my $d = Data::Dumper->new([$newConf->{$var}], \[*value]);
solves the issue, but I'm not sure I understand why exactly.

In particular, I would like to understand if it's BackupPC doing something that it shouldn't when using [*value], or if it is Data::Dumper that broke the rules by doing things differently now.

(Later edit) Looks like the correct question is like

should [*value] be a list or an arrayref?