Как извлечь много строк из файла и отделить их - PullRequest
0 голосов
/ 20 июня 2011

У меня есть следующий код:

#!/usr/local/bin/perl

use warnings;    
use strict;

my $inputfile = "file1.txt"; 

open FH,$inputfile;          
my @results = <FH>;   
close FH;           

print "\n---------type n--------------\n" ;

foreach my $line (@results) { 
    if ($line =~ m/(^Mgn\d\.qna.*)/i)            
    {
        print "$1\n";  
    }    
}

print "\n---------type p--------------\n" ;

foreach my $line (@results) {
   if ($line =~ m/(^Mgp\d\.qpa.*)/i)     
       print "$1\n"; 
   }
}

Следующий код печатает строки, начинающиеся с Mg1.qna ..... теперь я должен добавить алфавит в конце каждой строки как a, b, c, ...... может кто-нибудь просветит меня это

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

как это ??

my @type_p;
my $l='a'; # ++ op will increment it
print "\n---------type n--------------\n" ;

foreach my $line (@results) { 
    if ($line =~ m/(^Mgn\d\.qna.*)/i) {
        print $1.($l++)."\n";  
    } elsif ($line =~ m/(^Mgp\d\.qpa.*)/i) { #avoid the 2nd foreach loop
       push @type_p,$1; 
    }

}

print "\n---------type p--------------\n" ;
#$l='a'; #reset counter
print $_.($l++)."\n" for (@type_p);
0 голосов
/ 23 июня 2011

Я сделал пару изменений:

  • Я добавил chomp, чтобы удалить символ \n в конце каждой строки.Это может не иметь никакого значения, но это может.Помните, что когда вы читаете во вводе, он может содержать символ \n в конце.
  • Я добавил $code++;.

Одна из приятных особенностей Perl заключается в том, чтоэто довольно умно об автоинкрементных вещах.Вы пытаетесь автоматически увеличивать что-то с буквами в нем, и Perl предполагает, что вы хотите обновить это по алфавиту.

Таким образом, я просто устанавливаю $n_code и $p_code в «a», и позволяю Perl обрабатывать

Вы не очень ясно поняли, что искали, поэтому я надеюсь, что это именно то, что вы имели в виду.

В следующий раз включите некоторые примеры ввода и вывода.Полдюжины строк каждого были бы очень полезны.

#!/usr/local/bin/perl

use warnings;    
use strict;

my $inputfile = "file1.txt"; 

open FH,$inputfile;          
my @results = <FH>;   
close FH;           

print "\n---------type n--------------\n" ;

my $n_code = "$a";
foreach my $line (@results) {
    chomp $line;  # Remove possible NL
    if ($line =~ m/(^Mgn\d\.qna.*)/i)            
    {
        print "$1 $n_code\n";
        $n_code++;   #Increment code to next alphabet character
    }    
}

print "\n---------type p--------------\n" ;

my $p_code = a;
foreach my $line (@results) {
   chomp $line;   #Remove possible NL
   if ($line =~ m/(^Mgp\d\.qpa.*)/i)     
       print "$1 $p_code\n";
       $p_code++;    #Increment code to next letter of alphabet
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...