in reply to concatenating elements of an array in twos

$templine starts undefined, but you add $temp to it. Do you want to concatenate $sid and $sidtwobinder[1] ? Also, "sid 1" and "1" are different strings.

@sid is not needed, you can extract it from the left hand sides of the unpaired.

Just iterate over the list and check wheter the sid is the same as previously. If yes, concatenate, if not, start a new one.

#!/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;
($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Replies are listed 'Best First'.
Re^2: concatenating elements of an array in twos
by Sandy_Bio_Perl (Beadle) on Aug 16, 2016 at 23:48 UTC

    Thank you very much, that worked a treat