WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Perl · Intermediate · question 25 of 100

How do you manage and manipulate complex data structures like multi- dimensional arrays and hashes of hashes in Perl?

📕 Buy this interview preparation book: 100 Perl questions & answers — PDF + EPUB for $5

Managing and manipulating complex data structures like multi-dimensional arrays and hashes of hashes is a core element of Perl programming. Perl provides a rich set of tools and constructs for this purpose.

### Multi-dimensional Arrays

Multi-dimensional arrays are used to store data in a table-like structure with rows and columns. In Perl, a multi-dimensional array can be created using an array of arrays. For example:

my @array_2d = (
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
);

You can access elements of the multi-dimensional array using the square bracket notation. For example:

print $array_2d[0][0]; # prints 1
print $array_2d[1][2]; # prints 6

To traverse a multi-dimensional array, you can use nested loops. For example:

for my $i (0 .. $#array_2d) {
  for my $j (0 .. $#{$array_2d[$i]}) {
    print $array_2d[$i][$j], " ";
  }
  print "n";
}

This code will print:

1 2 3
4 5 6
7 8 9

### Hashes of Hashes

Hashes of hashes are used to store data in a nested structure of keys and values. In Perl, a hash of hashes can be created using curly braces for each level of the hash. For example:

my %hash_2d = (
  row1 => {
    col1 => 'a',
    col2 => 'b',
    col3 => 'c'
  },
  row2 => {
    col1 => 'd',
    col2 => 'e',
    col3 => 'f'
  },
  row3 => {
    col1 => 'g',
    col2 => 'h',
    col3 => 'i'
  }
);

You can access elements of the hash of hashes using the arrow notation. For example:

print $hash_2d{row1}{col1}; # prints a
print $hash_2d{row2}{col3}; # prints f

To traverse a hash of hashes, you can use nested loops. For example:

for my $row (sort keys %hash_2d) {
  for my $col (sort keys %{$hash_2d{$row}}) {
    print $hash_2d{$row}{$col}, " ";
  }
  print "n";
}

This code will print:

a b c
d e f
g h i

### Manipulating Complex Data Structures

Perl provides a wide range of functions for manipulating complex data structures. Some of the most common are:

- ‘push‘: add an element to the end of an array

- ‘pop‘: remove and return the last element of an array

- ‘shift‘: remove and return the first element of an array

- ‘unshift‘: add an element to the beginning of an array

- ‘delete‘: remove an element from a hash

- ‘keys‘: return a list of keys in a hash

- ‘values‘: return a list of values in a hash

These functions can be used to add, modify, or remove elements from a multi-dimensional array or hash of hashes. For example:

# add a new row to the multi-dimensional array
push @array_2d, [10, 11, 12];

# remove the first row from the hash of hashes
delete $hash_2d{row1};

# add a new column to the hash of hashes
for my $row (keys %hash_2d) {
  $hash_2d{$row}{col4} = 'x';
}

In summary, managing and manipulating complex data structures like multi-dimensional arrays and hashes of hashes is an essential skill for Perl programmers. With the right tools and techniques, you can efficiently store, access, and modify complex data in your programs.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Perl interview — then scores it.
📞 Practice Perl — free 15 min
📕 Buy this interview preparation book: 100 Perl questions & answers — PDF + EPUB for $5

All 100 Perl questions · All topics