La verdad es que he aprendido mucho de perl con uds... sin embargo tengo el siguiente problema:
Necesito separar unos patrones en diferentes palabras, las cuales se encuentran escritas en una misma línea. Gracias a su ayuda puedo descomponer las palabras en los patrones, sin embargo necesito que aparezcan en el orden que vienen en la entrada. Ademas, las palabras que no sigan un patron deben imprimirse en la salida tal cual.
El problema es que no puedo generar la salida como deberia...
Por el momento tengo el siguiente codigo:
Using perl Syntax Highlighting
@patrones = # patrones a buscar
( 'ACRO?(?!(MA|SIS))',
'ADENO?(?!(MA|SIS))',
'OSIS',
'OMA',
'ITIS'
)
$sw = 1;
@lineas = <>; # lineas desde un archivo de entrada
foreach $palabra(@lineas)
{my @encontrado;
#busca patron en palabras de entrada
foreach $patron ( @patrones )
{if ( $palabra =~ /($patron)/i )
{push @encontrado, $1;
$sw = 0;
}
}
#trata las palabras de entrada que no tienen patron
if ( $sw == 1 )
{push @encontrado, $palabra;
$sw = 1;
}
@registro = join(" ", @encontrado);
print @registro;
print "\n";
}
( 'ACRO?(?!(MA|SIS))',
'ADENO?(?!(MA|SIS))',
'OSIS',
'OMA',
'ITIS'
)
$sw = 1;
@lineas = <>; # lineas desde un archivo de entrada
foreach $palabra(@lineas)
{my @encontrado;
#busca patron en palabras de entrada
foreach $patron ( @patrones )
{if ( $palabra =~ /($patron)/i )
{push @encontrado, $1;
$sw = 0;
}
}
#trata las palabras de entrada que no tienen patron
if ( $sw == 1 )
{push @encontrado, $palabra;
$sw = 1;
}
@registro = join(" ", @encontrado);
print @registro;
print "\n";
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Probando el codigo se genera:
Entrada:
Chao
adenoma
acroma HOLA adenitis
Salida generada:
Chao
aden oma
acr aden oma itis
Salida deseada:
Chao
aden oma
acr oma HOLA aden itis
Como se pueden dar cuenta, despues de una palabra que no tiene patron, se imprime un espacio en blanco que no se me ocurre como eliminar...
Por favor, agradeceria su ayuda...
De antemano, muchas gracias!!!