J'ai un fichier de données simple. Chaque ligne du fichier contient quatre éléments. Certaines lignes sont remplies sans aucune entrée vide. D'autres lignes ont une première entrée et les trois suivantes sont vides, ou plutôt "remplies" d'un espace. C'est un fichier délimité par des tabulations.
Exemple du fichier d'entrée :
.
.
.
30 13387412 34.80391242 sSN_FIRST
30 13387412 34.80391242 sSN5_40
30.1
30.2
30.3
30.4
31 14740248 65.60590089 s32138223_44
31 14740248 65.60590089 s321382_LAST
.
.
.
Pour réitérer, les "vides" dans mon fichier contiennent en fait un seul espace, si cela importe.
Mon objectif global est de "remplir" la deuxième et la troisième colonne (la quatrième colonne est ignorée) dans tout le fichier. Pour cela, j'ai besoin que mon script identifie des ensembles de lignes consécutives qui sont vides, plus la ligne immédiatement précédente et la ligne immédiatement suivante de l'ensemble de lignes vides. Dans l'exemple ci-dessus, il s'agirait des lignes 2 à 7. Une fois que j'aurai réussi à le faire, je pourrai utiliser les informations des lignes adjacentes, qui sont remplies, pour aider à "remplir" les entrées manquantes dans les lignes intermédiaires.
J'ai expérimenté avec la fonction until
, mais je n'arrive pas à la coupler avec une boucle qui lit les données ligne par ligne. Par exemple, je peux lire les lignes et trouver les lignes vides :
open( my $FILE, "<$mapfile" );
my @file = <$FILE>;
close $FILE;
for ( my $i = 1 ; $i < scalar @file ; $i++ )
{
my @entries = split( '\t', $file[ $i ] );
if ( $entries[ 1 ] =~ m/ / )
{
print $file[ $i ]."\n";
}
}
Mais j'essaie d'utiliser la fonction until
, pour lire les lignes et rechercher l'ensemble de lignes consécutives que je recherche (les lignes vides plus les deux lignes adjacentes pleines). Par exemple :
until ( $file[ une ligne ] =~ m/ / && $file[ une autre ligne ] =~ m/ / )
{
mon interpolation linéaire ici;
}
Quelqu'un pourrait-il me donner un indice sur la manière de coupler une méthode pour lire le tableau et comparer les lignes afin de trouver les ensembles dont j'ai besoin à travers le fichier ?