#!/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);