http://www.perlmonks.org?node_id=103919


in reply to Evaluating Multidimensional Arrays and References

The problem is that the @{...} returns an array. When you compare this with "John", it gets converted into a scalar, which is the size of the array (probably 1 in this case). So you're saying 'if 1 eq "John"'...

The reason that it prints is that its contents are being interpolated into the string (separated by $, but that doesn't matter if you have one element).

What you probably want is to say:

if ($self->{_mydata}[2][3][0] eq "John") { print "My name is $self->{_mydata}[2][3][0]\n"; }