my $string = '1,2,3,4,5:one,two,three,four,five'; my %results; my @vals = split /[:,]/, $string; if ( $#vals % 2 ) { for ( 0 .. int( $#vals/2 ) ) { $results{ $vals[ $_ ] } = $vals[ $_ + int( $#vals/2 ) + 1 ]; } }