use strict; use warnings; use Data::Dumper; my @sorted = qw(1.2.3 a.b.c literal.b.c); my @array1; my @array2; my @array3; foreach my $results (@sorted) { my @listOfItems = split( /\./, $results); if ( $listOfItems[0] =~ /literal/ ) { $listOfItems[0] = join(".", @listOfItems[0..1]); } push (@array1, $listOfItems[0]); push (@array2, $listOfItems[1]); push (@array3, $listOfItems[2]); # @array1 should contain the newly conjoined $listOfItems[0] } print Dumper \@array1;