#!/usr/bin/perl use strict; use warnings; $_ = '1:1,2:1,3:2,500:2,505:1'; my (@array, %hash); %hash = map { my @x = split /:/; push @array, $x[0]; @x } split /,/; use Data::Dumper; print Dumper \@array, \%hash;