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

'Josep Ruano' jruano a capside.com
dll set 28 08:18:16 PDT 2009


Hola!

A mi se m'acut que una manera llegible de fer-ho, ja que en José Luis
demanava això, podria ser la següent, pressuposant que NO tindrem lletra a
les dues cadenes al mateix temps i que ambdues cadenes tenen igual longitud:

----------------------------------------------------------------------------
--------------------

my $patro = { '-' => { '-' => '-', 'A' => 'A', 'C' => 'C', 'T' => 'T', 'G'
=> 'G' },
		'A' => { '-' => 'A'}, 
		'C' => { '-' => 'C' },
		'G' => { '-' => 'G' },
	 	'T' => { '-' => 'T' },
		' ' => { ' ' => ' ' };
my $unio = '';

for (my $i = 0; $i < length($seq1); $i++) {
	$unio .= $patro{ substr($seq1, $i, 1) }{ substr($seq2, $i, 1) }; }

----------------------------------------------------------------------------
--------------------


També podriem canviar l'ús de substr per un accés a un vector, en la forma: 


---------------------
my $unio = '';
my @seq1a = split //, $seq1;
my @seq2a = split //, $seq2;
for (my $i = 0; $i < @seq1a; $i++) {
	$unio .= $patro{$seq1a[$i]}{$seq2a[$i]}; }

---------------------


Què us sembla? Ho trobeu llegible? No he provat a nivell de rendiment què
tal es compara amb les opcions basades en expressions regulars...

Salutacions,

Josep Ruano
CAPSiDE
w w w . c a p s i d e . c o m






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