my $arr = ['A -4 C','C -4 B','B -4 A','A -2 C','C -3 B']; decomp_a2aoa_wth_idx($arr); sub decomp_a2aoa_wth_idx { my $arr = shift; my @aoa = (); foreach ( 0 .. @{$arr}-1 ) { my @tmp = split(" ", $arr->[$_]); push @tmp, $_; push @aoa,[@tmp]; } return @aoa; }