#!/usr/bin/perl -w use strict; my $arr = ['A -4 C','C -4 B','B -4 A','A -2 C','C -3 B']; my @a = do { my $idx = 0; map { { data => [ split ' ', $_ ], idx => $idx++, } }@$arr }; use Data::Dumper; print Dumper(\@a); #### $VAR1 = [ { 'idx' => 0, 'data' => [ 'A', '-4', 'C' ] }, { 'idx' => 1, 'data' => [ 'C', '-4', 'B' ] }, { 'idx' => 2, 'data' => [ 'B', '-4', 'A' ] }, { 'idx' => 3, 'data' => [ 'A', '-2', 'C' ] }, { 'idx' => 4, 'data' => [ 'C', '-3', 'B' ] } ]; #### my @a = do { my $idx = 0; map { [ (split ' ', $_), $idx++ ], }@$arr };