Newsgroup: it.comp.lang.perl
Titolo: Inserire caratteri da una stringa in un'altra, sembra facile !

Salve,
Ho una stringa di questo tipo:
MFDF-FDHSAHFD---FDSFGDSH--FDSFDSFD
devo inserire i trattini nella stringa di cui sotto che non li
contiene nello stesso numero di trattini e nella stessa posizione come
sopra:
ccccchhhcccchchchchhhhhhcccccchhhcccchh
Come posso fare ? Per favore aiutatemi. Grazie mille
Giuseppe
josep...@interfree.it
LCDN - Il portale al servizio del tuo PC
http://www.lcdn.it

 ccccchhhcccchchchchhhhhhcccccchhhcccchh
se ho ben capito cosa chiedi, allora *forse* una delle soluz č:
use strict;
my $modello='MFDF-FDHSAHFD---FDSFGDSH--FDSFDSFD';
my $input='ccccchhhcccchchchchhhhhhcccccchhhcccchh';
   # output che mi pare di aver capito tu voglia:
   # cccc-chhhcccc---hchchch--hhhhhcccccchhhcccchh';
my $output;
my $posizione_trattino;
while (($posizione_trattino=index($modello,'-',0))>-1) { 	#entro quando
trovo un trattino
	$output.=substr($input,0,$posizione_trattino).'-'; 	#costruisco output
	$input=substr($input,$posizione_trattino); 		#consumo input
	$modello=substr($modello,$posizione_trattino+1); 	#consumo modello
}
$output.=$input;
print $output,"\n";

 Come posso fare ? Per favore aiutatemi. Grazie mille
$a = "a-z-de-g-";
$b = "ABCDEFGHI";
$count = 0;
$c = join('', (map { $_ = substr($b, $count, 1) if $_ eq '-'; $count++; $_; 
} split('', $a)));
print "$c\n";
-- 
/federico



Grazie Federico per il tuo aiuto. Spero col tempo di diventare esperto
anch'io ! Ho bisogno di un altro piccolo aiuto per favore:
In due array ho una prima serie di stringhe del tipo (con i trattini):
MKWRYD---DDJDJDJDSJSDKSADJASKDJSAKDJAKDSAJD
MQWSKSSKSADJSAKDJSADKJSAWRE---SADSADSADSA
CWQWQWQWQWWQWQ---QWQWQWQWQWQWQWQW
DVCHGFHWUANVD---------SHDGSGSDBCNBAZZXXZASSAA
ecc ecc e nell'altro una serie così più lunga della prima:
cchchchchchchchchchchchchchchchchchchchcchchchchchchchchchchchcch
hcc??chchchchchchchchchchchchc???cjhchchchchchchchchchchchchchchch
chchchchhhhhhhhhhcccccccccccccccccccchhhhhhhhhhhhhhcccccccccccccc
cccccccccchhhhhhhhhhhhhhhccccccccccccchhhhhhhhhhhhhhccccccccccccc
Devo produrre un terzo array che contenga le stringhe di caratteri
minuscoli di cui sopra ma con il famoso trattino nella stessa
posizione e numero (di trattini) della stringa con i caratteri
maiuscoli. Fin qui tutto OK, grazie al tuo codice ho risolto
il problema, la mia difficoltà sta nel fatto che la stringa con i
caratteri minuscoli deve risultare della stessa lunghezza di quella
con i caratteri maiuscoli trattini compresi. La parte eccedente la
devo "attaccare" alla stringa che viene (quella che inizia con "hcc??"
per intenderci) ma nello stesso tempo questa stringa deve contenere
i famosi trattini contenuti nella seconda stringa con i caratteri
maiuscoli (quella che inizia con "MQWSK").
Tu come faresti ? Io sto uscendo scemo. Per favore aiutami !
Grazie.
Giuseppe

 maiuscoli (quella che inizia con "MQWSK").
_spero_ di aver intuito la soluzione:
##############
use strict;
my @modello=qw( MKWRYD---DDJDJDJDSJSDKSADJASKDJSAKDJAKDSAJD
		MQWSKSSKSADJSAKDJSADKJSAWRE---SADSADSADSA
		CWQWQWQWQWWQWQ---QWQWQWQWQWQWQWQW
		DVCHGFHWUANVD---------SHDGSGSDBCNBAZZXXZASSAA
	       );
my @input=qw(
cchchchchchchchchchchchchchchchchchchchcchchchchchchchchchchchcch
 
hcc??chchchchchchchchchchchchc???cjhchchchchchchchchchchchchchchch
	      chchchchhhhhhhhhhcccccccccccccccccccchhhhhhhhhhhhhhcccccccccccccc
	      cccccccccchhhhhhhhhhhhhhhccccccccccccchhhhhhhhhhhhhhccccccccccccc
	    );
my @output;
foreach my $indice_riga (0 .. $#modello) {
	my $posizione_trattino;
	while (($posizione_trattino=index($modello[$indice_riga],'-',0))>-1) {
 
$output[$indice_riga].=substr($input[$indice_riga],0,$posizione_trattino).'-';
 
$input[$indice_riga]=substr($input[$indice_riga],$posizione_trattino);
 
$modello[$indice_riga]=substr($modello[$indice_riga],$posizione_trattino+1);
	}
$output[$indice_riga].=substr($input[$indice_riga],0,length($modello[$indice_riga]));
$input[$indice_riga+1]=substr($input[$indice_riga],length($modello[$indice_riga])).$input[$indice_riga+1];
}
# per avere il restante input in output (dato che è + grande del
modello), decommenta la linea seguente
# $output[$#input]=$input[$#input] if ($input[$#input]);
foreach (@output) {print $_,"\n"}
##############
non è affatto perlished... sorry :(

 maiuscoli (quella che inizia con "MQWSK").
mmh non credo di aver capito bene, puoi fare un'esempio col risultato che 
vorresti ottenere?
-- 
/federico



Ho due file di testo dai quali metto in un primo array una prima serie
di stringhe del tipo (con i trattini):
MKWRYD---DDJDJDJDSJSDKSADJASKDJSAKDJAKDSAJD
MQWSKSSKSADJSAKDJSADKJSAWRE---SADSADSADSA
CWQWQWQWQWWQWQ---QWQWQWQWQWQWQWQW
DVCHGFHWUANVD---------SHDGSGSDBCNBAZZXXZASSAA
ecc ecc e in un altro array un'altra una serie così più lunga della
prima:
cchchchchchchchchchchchchchchchchchchchcchchchchchchchchchchchcch
hcc??chchchchchchchchchchchchc???cjhchchchchchchchchchchchchchchch
chchchchhhhhhhhhhcccccccccccccccccccchhhhhhhhhhhhhhcccccccccccccc
cccccccccchhhhhhhhhhhhhhhccccccccccccchhhhhhhhhhhhhhccccccccccccc
Devo produrre un terzo array che contenga le stringhe di caratteri
minuscoli di cui
sopra ma con il famoso trattino nella stessa posizione e numero (di
trattini) della
stringa con i caratteri maiuscoli. Fin qui tutto OK, grazie al tuo
codice ho risolto
il problema, la mia difficoltà sta nel fatto che la stringa con i
caratteri minuscoli
deve risultare della stessa lunghezza di quella con i caratteri
maiuscoli trattini
compresi. La parte eccedente la devo "attaccare" alla stringa che
viene (quella che
inizia con "hcc??" per intenderci) ma nello stesso tempo questa
stringa deve contenere
i famosi trattini contenuti nella seconda stringa con i caratteri
maiuscoli (quella che inizia
con "MQWSK").
Tu come faresti ?
Grazie
Giuseppe

 maiuscoli (quella che inizia con "MQWSK").
mmh non credo di aver capito bene, puoi fare un'esempio col risultato che 
vorresti ottenere?
(ho come un deja-vu...)
-- 
/federico