my @distance_mat=[]; ... my @vit_dist=[ [ 0] ]; #### ${$vit_dist[$i]}[$j]=min(${$vit_dist[$i-1]}[$j]+${$distance_mat[$i]}[$j]; #### ${${$distance_mat[$i]}[$j]}[$k] #### #!/usr/bin/env perl use strict; use warnings; my $max_index = 1; my $matrix; for my $i (0 .. $max_index) { for my $j (0 .. $max_index) { for my $k (0 .. $max_index) { $matrix->[$i][$j][$k] = rand 1; } } } use Data::Dump; dd $matrix; #### [ [ [0.290579816865833, 0.491432556740136], [0.888187692306143, 0.761365009561764], ], [ [0.865674078359991, 0.284696276285089], [0.0562126863718184, 0.781856824452085], ], ]