Tengo varias listas con un número variable de elementos. Quiero comparar las listas con menor número de elementos contra las listas que tienen mayor número de elementos. Si todos los elementos de la lista con menor número de elementos están contenidos en la lista con mayor número de elementos quiero imprimir el nombre de dicha lista en un archivo de salida.
Este es el script que he desarrollado hasta el momento. Soy nuevo en cuestiones de programación. Ojalá puedan ayudarme. ¡Gracias!
Using perl Syntax Highlighting
- #! usr/bin/perl
- # fatache.pl compara las listas generadas por programa.pl (*.bcl) para eliminar las listas con menor numero de elementos,
- # pero con los mismos elementos que contienen las listas con mayor numero de elementos
- open( KOLIST, "/home/daniel/Desktop/queries/kolist" )
- || die("unable to open kolist");
- while ( $ko = <KOLIST> ) {
- chomp($ko);
- print("$ko\n");
- <STDIN>;
- open( GN, "/home/daniel/Desktop/bcl/$ko.gene" )
- || die("unable to open $ko.gene");
- while ( $gene = <GN> ) {
- chomp($gene);
- print("***$gene***\n");
- open( OCDGN, "/home/daniel/Desktop/queries/$ko/ordenados/$gene.ocd" )
- || die("unable to open $gene.ocd");
- @ocdgenes = <OCDGN>;
- chomp(@ocdgenes);
- $ocdscalar = @ocdgenes;
- print("$ocdscalar\n");
- <STDIN>;
- open( OCDLIST, "/home/daniel/Desktop/queries/$ko/$ko.bcl" )
- || die("unable to open $ko.bcl");
- @ocdlist = <OCDLIST>;
- chomp(@ocdlist);
- foreach $ocdelement (@ocdlist) {
- chomp($ocdelement);
- print("+++$ocdelement+++\n");
- open( OCDELEMENTS,
- "/home/daniel/Desktop/queries/$ko/ordenados/$ocdelement" )
- || die("unable to open $ocdelement");
- @ocdelements = <OCDELEMENTS>;
- chomp(@ocdelements);
- $ocdelementscalar = @ocdelements;
- print("$ocdelementscalar\n");
- # <STDIN>;
- if ( $ocdscalar > $ocdelementscalar ) {
- print("ocdscalar es mayor que ocdelementscalar\n");
- <STDIN>;
- $count = 0;
- print("$count\n");
- while ( $count < $ocdscalar ) {
- print("$ocdelements[$count]\n");
- print("$ocdgenes[$count]\n");
- <STDIN>;
- foreach $ocdelements (@ocdelements) {
- chomp($ocdelemnts);
- foreach $ocdgenes (@ocdgenes) {
- chomp($ocdgenes);
- if ( $ocdelements =~ /$ocdgenes/ ) {
- $count++;
- if ( $count == $ocdelementscalar ) {
- print(
- "$gene.ocd contiene todos los elementos de $ocdelement\n"
- );
- <STDIN>;
- }
- }
- else {
- last;
- }
- }
- }
- }
- }
- }
- }
- }
- exit;
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4