Leyendo secciones de un archivo en Perl

Estoy tratando de leer los valores de un archivo de entrada en Perl. El archivo de entrada se ve como:

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

Quiero leer los datos anteriores para que los datos de1-sampledata1 entra en@array1 y datos para2-sampledata2 entra@array2 y así. Tendré unas 50 secciones como esta. me gusta50-sampledata50.

EDITAR: Los nombres no siempre serán X-sampledataX. Acabo de hacer eso, por ejemplo. Así que los nombres no pueden estar en un bucle. Creo que tendré que escribirlos manualmente

Hasta ahora tengo lo siguiente (que funciona). Pero estoy buscando una manera más eficiente de hacer esto ..

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/);
        }
}

Como puede ver, tengo diferentes matrices para cada sección y diferentes para bucles para cada sección. Si voy con el enfoque que tengo hasta ahora, terminaré con 50 para bucles y 50 arreglos.

¿Hay otra forma mejor de hacer esto? Al final, quiero terminar con 50 arreglos, pero no quiero escribir 50 para bucles. ¿Y ya que voy a recorrer los 50 arreglos más adelante en el programa, tal vez almacenarlos en un arreglo? Soy nuevo en Perl, así que es un poco abrumador ...

Respuestas a la pregunta(4)

Su respuesta a la pregunta