Das hat mit Windows vs. Linux erstmal nichts zu tun. In Deiner Variablen
$zwischen steht eben was, das mit "**" beginnt. Im RegEx-Suchmuster wird die Variable interpoliert und die zwei * als "nested quantifiers" moniert.
Abhilfe (
hier falsch, siehe unten):
@funde_liste = grep { m/^ \Q ${zwischen}\E \t/xi } @inhalt_pruef;
\Q ... \E maskiert die "special chars" (hier die *).
Tip am Rande: Ich habe mir angewöhnt, Variablen innerhalb RegExes immer in der Form ${foo} statt $foo zu schreiben, das macht vieles klarer :)
Korrektur
Auf das \Q darf nicht ein Leerzeichen folgen, der /x-Modifier nützt da nichts.
Richtig ist:
@funde_liste = grep { m/^\Q${zwischen}\E\t/i } @inhalt_pruef;
oder
quotemeta():
$zwischen = quotemeta $zwischen;
@funde_liste = grep { m/^${zwischen}\t/i } @inhalt_pruef;
Last edited: 2018-02-20 23:52:38 +0100 (CET)
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"