#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; my @unpairedSidBinder = ( 'sid 1|FLPSDFFPS LLWFHISCL', 'sid 1|WIRTPPAYR YVNVNMGLK', 'sid 2|FLPSDFFPS LLWFHISCL', 'sid 2|FLPSDFFPS ELMNLATWV', 'sid 7|FLPSDFFPS ATVELLSFL', 'sid 7|VWIRTPPAY LLSFLPSDF', 'sid 9|VWIRTPPAY LLDTASALY', 'sid 9|FGRETVLEY PSDFFPSVR', ); my @combined = (); my $last = q(); for my $item (@unpairedSidBinder) { my ($left, $right) = split /\|/, $item; if ($left eq $last) { $combined[-1] .= " $right"; } else { push @combined, "$left|$right"; $last = $left; } } say for @combined;