Halihallo Matti
my @sub = split( /|/, $arr[$i] );
In @sub hat er jetzt die einzelnen Komponenten der aktuellen Zeile, jeweils am | getrennt (den '' vor dem '|' kannst du wegmachen, die Pipe muss IMHO nicht maskiert werden.
Das hat nix mit Pipe zu tun, sondern wird in einem regulären Ausdruck als "oder" interpretiert, was bestimmt zu ziemlich wirren Ausgaben führen wird. Oder hast du da andere Erfahrungen? :-))
Viele Grüsse
Philipp