Ich hoffe auch hier kann man mich verstehen?
Zunächst, Ich weiss nicht, wie sinnvoll es ist, ein File in einen Array zu speichern.
Weiter gilt: split() ist langsam bei perl. Ich bevorzuge eine RE.
my @data;
while(<FILEHANDLE>){
my %temp = (); # Wir brauchen einen neuen hash
#ich bearbeite jetzt jede Zeile = Record
# Die folgende RE hat eine Backreferenz \1 auf $1
while($_ =~ s#\[([^\[\]]+?)\](.*?)\[/\1\]##g ){
$temp{$1} = $2 || '';
}
# an dieser Stelle kannst jetzt mit $temp arbeiten
# ...
# oder wenn du es in einem Array wirklich speichern musst ???
# wir speichern die Referenz des Hashes im Array
push( @data, \%temp);
}
nochmals die RE etwas deutlicher
s#\[
([^\[\]]+?)
\]
(.*?)
\[
/\1
\]##gx
mfg Beat