Perl::Critic::Policy::Community::MultidimensionalArrayEmulation(3pm)

Perl::Critic::Policy::Community::MultidimensionalArrayEmulation3pm

Don't use multidimensional array emulation

Overview

When used with the "@" or "%" sigils, a list in a hash subscript ("{}") will access multiple elements of the hash as a slice. With the "$" sigil however, it accesses the single element at the key defined by joining the list with the subscript separator $;. This feature is known as "Multi-dimensional array emulation" in perldata and provided a way to emulate a multidimensional structure before Perl 5 introduced references. Perl now supports true multidimensional structures, so this feature is now unnecessary in most cases.

In Perl 5.34 or newer, or automatically under "use v5.36" or newer, ""The 'multidimensional' feature" in feature can be disabled to remove this syntax from the parser.

  $foo{$x,$y,$z}   # not ok
  $foo{qw(a b c)}  # not ok
  $foo{$x}{$y}{$z} # ok
  @foo{$x,$y,$z}   # ok

Affiliation

This policy is part of Perl::Critic::Community.

Configuration

This policy is not configurable except for the standard options.

Releases

2 releases since Debian 12 (Bookworm); the text changed 1 time.

  1. 12
  2. 13

Author

Dan Book, "[email protected]"

From libperl-critic-community-perl 1.0.4-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.