[bcn-pm] pregunta: unio de dues cadenes de caracters

Bruno brunorc a gmail.com
dll set 21 11:36:34 PDT 2009


Hola,

use strict;
use warnings;

my $seq1 = '--- --- GAA --- GGA';
my $seq2 = 'AAC TGG --- --- ---';

{
    my @seq2 = split //, $seq2;

    my $idx = -1;

    my $result = join '', ( map { $idx++; $_ eq '-' ? $seq2[$idx] : $_
} split //, $seq1 );

    print "$result\n";
}

{
    my @seq1 = split //, $seq1;
    my @seq2 = split //, $seq2;

    my $result = join '', ( map { $seq1[$_] eq '-' ? $seq2[$_] :
$seq1[$_] } 0 .. $#seq1 );

    print "$result\n";
}

El segundo me gusta mas ;-)

2009/9/21 Jordi Delgado <jdelgado at lsi.upc.edu>:
> Hola,
>
> Y esto? Que tal?
>
> #----------------------------------------------
> $seq1 = "--- --- GAA --- GGA";
> $seq2 = "AAC TGG --- --- ---";
> @seq2 = split(//,$seq2);
>
> ($union = $seq1) =~ s/(.)/($1 eq "-") ? $seq2[$-[0]]: $1/ge;
> #----------------------------------------------
>
> El resultado es la string en $union
> Es esto "Modern Perl"?? ;-))
>
> Salud!
>
> Jordi
>
>
>
>> Hola,
>>
>> Estic buscant una manera elegant de fer la unió de dues cadenes de
>> caràcters. Per exemple:
>>
>> $seq1 = "--- --- GAA --- GGA";
>> $seq2 = "AAC TGG --- --- ---";
>>
>> La norma és que es mantingui el "-" quan ambdues ho tenen, però s'esculli la
>> lletra quan una contingui lletra:
>>
>> $unio = "AAC TGG GAA --- GGA";
>>
>> Potser mitjançant una expressió regular?
>>
>> Gràcies,
>>
>> Albert.
>
>> _______________________________________________
>> llista dels Barcelona-pm
>> Barcelona-pm at pm.org
>> http://mail.pm.org/mailman/listinfo/barcelona-pm
>> BCN Perl Mongers: http://barcelona.pm.org
> _______________________________________________
> llista dels Barcelona-pm
> Barcelona-pm at pm.org
> http://mail.pm.org/mailman/listinfo/barcelona-pm
> BCN Perl Mongers: http://barcelona.pm.org


Més informació sobre la llista de correu Barcelona-pm