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; } #### $VAR1 = [ ['A','-4','C',0], ['C','-4','B',1], ['B','-4','A',2], ['A','-2','C',3], ['C','-3','B',4] ];