One could if you ignore intent, but I wouldn't support that conclusion.
The warning deals with return value and where it ends up.
perldiag says:
...
Very
often this points not to stupidity on your part, but a failure of Perl
to parse your program the way you thought it would...
so if you were to adapt perldiag example with andreas' example you get
#~ perl -MDDS -Mstrict -Mwarnings -le " my $hr; map { @{$hr->{$_}}{qw'
+ a b c '} = $_,$_,$_ ; } 1; Dump($hr) "
#~ perl -MDDS -Mstrict -Mwarnings -le " my $hr; map { @{$hr->{$_}}{qw'
+ a b c '} = ( $_,$_,$_ ); } 1; Dump($hr) "
#~ perl -MDDS -Mstrict -Mwarnings -le " my $hr; $_ = 1; @{$hr->{$_}}{q
+w' a b c '} = $_,$_,$_ ; Dump($hr) "
#~ perl -MDDS -Mstrict -Mwarnings -le " my $hr; $_ = 1; @{$hr->{$_}}{q
+w' a b c '} = ( $_,$_,$_ ); Dump($hr) "
$ perl -MDDS -Mstrict -Mwarnings -le " my $hr; map { @{$hr->{$_}}{qw'
+a b c '} = $_,$_,$_ ; } 1; Dump($hr) "
$HASH1 = { 1 => {
a => 1,
b => undef,
c => undef
} };
$ perl -MDDS -Mstrict -Mwarnings -le " my $hr; map { @{$hr->{$_}}{qw'
+a b c '} = ( $_,$_,$_ ); } 1; Dump($hr) "
$HASH1 = { 1 => {
a => 1,
b => 1,
c => 1
} };
$ perl -MDDS -Mstrict -Mwarnings -le " my $hr; $_ = 1; @{$hr->{$_}}{qw
+' a b c '} = $_,$_,$_ ; Dump($hr) "
Useless use of a variable in void context at -e line 1.
Useless use of a variable in void context at -e line 1.
$HASH1 = { 1 => {
a => 1,
b => undef,
c => undef
} };
$ perl -MDDS -Mstrict -Mwarnings -le " my $hr; $_ = 1; @{$hr->{$_}}{qw
+' a b c '} = ( $_,$_,$_ ); Dump($hr) "
$HASH1 = { 1 => {
a => 1,
b => 1,
c => 1
} };
$
$
|