Czytanie sekcji z pliku w Perlu

Próbuję odczytać wartości z pliku wejściowego w Perlu. Plik wejściowy wygląda tak:

1-sampledata1 This is a sample test
              and data for this continues
2-sampledata2 This is sample test 2
              Data for this also is on second line

Chcę przeczytać powyższe dane, aby dane dla1-sampledata1 wchodzi w@array1 i dane dla2-sampledata2 wchodzi@array2 i tak dalej. Będę miał około 50 takich sekcji. lubić50-sampledata50.

EDYTOWAĆ: Nazwy nie zawsze będą X-sampledataX. Po prostu to zrobiłem. Więc nazwy nie mogą być w pętli. Myślę, że będę musiał wpisać je ręcznie

Do tej pory mam następujące (które działa). Ale szukam bardziej efektywnego sposobu na zrobienie tego ..

foreach my $line(@body){
        if ($line=~ /^1-sampledata1\s/){
                $line=~ s/1-ENST0000//g;
                $line=~ s/\s+//g;
                push (@array1, $line);
          #using splitarray because i want to store data as one character each
          #for ex: i wana store 'This' as T H I S in different elements of array
                @splitarray1= split ('',$line);
        last if ($line=~ /2-sampledata2/);
        }
}
foreach my $line(@body){
        if ($line=~ /^2-sampledata2\s/){
                $line=~ s/2-ENSBTAP0//g;
                $line=~ s/\s+//g;
                @splitarray2= split ('',$line);
        last if ($line=~ /3-sampledata3/);
        }
}

Jak widać, mam różne tablice dla każdej sekcji i różne dla pętli dla każdej sekcji. Jeśli pójdę z podejściem, które do tej pory miałem, skończę z 50 na pętle i 50 tablic.

Czy jest inny lepszy sposób na to? W końcu chcę skończyć z 50 tablicami, ale nie chcę pisać 50 dla pętli. A ponieważ będę przechodził przez 50 tablic później w programie, może je przechowywać w tablicy? Jestem nowy w Perlu, więc to trochę przytłaczające ...

questionAnswers(4)

yourAnswerToTheQuestion