Hi,
der zweite RegEx ist ueberflüssig, wenn das Muster gleich ist.
So sollte es funktionieren:
# solange treffer gefunden werden
while ( $data[$t] =~ /(\S+)/g ){
# wird jeder treffer in @test abgelegt
push( @test, $1 );
}
Bei Deinem Code hast Du, sobald ein Treffer gefunden werden kann, eine
while ( TRUE ) Schleife.
Der erste Treffer wird gefunden, und das push wird ausgeführt. Dann prüft er wieder die Bedingung. Mangels /g-Modifier wird die RegEx-Suche wieder am String-Anfang gestartet und wieder wird der erste Treffer gefunden; das push wird wieder ausgeführt.
Das geht bis zum Programmabbruch so weiter ...
perlre
[edit1] Erklärung nachgereicht
[edit2] perl- duch code-block ersetzt; edit-history\n\n
<!--EDIT|Linuxer|1149754508-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!