Beat: Hilfe bei einem regulären Ausdruck

Beitrag lesen

Ich sitze vor dem u.a. Ausdruck und steige einfach nicht zu 100% dahinter, was der Verfasser damit ausdrücken will:
$variable =~ /^([\w\W^-]*)-Wort$/

[\w\W] matcht auf alles, da jedes Zeichen, das nicht \w ist, zwangsläufig \W ist. Die nachfolgenden Zeichen ^- ändern daran auch nichts mehr.
Das ist also identisch zu

$variable =~ /^(.*)-Wort$/s

Ferner fragt der Autor ab, ob der o.a. Ausdruck wahr ist (Verwendung in einer IF-Clause).

if( "-Wort" =~ /^(.*)-Wort$/s ){  #true  }
if( "\n-Wort" =~ /^(.*)-Wort$/s ){  #true  }

Ich hoffe, ihr versteht ihn etwas besser als ich!

Meine Intuition sagt mir dass der Autor viel mehr dieses pattern beabsichtigte.

$variable =~ /^([^-]*)-Wort$/
Matche irgendwas vor '-Wort' solange es nicht ein Hyphen ist.

^ bedeutet eine negierte Zeichenklasse WENN ^ das erste Zeichen in [] ein ^ ist.
Es gibt keine Zeichenklassen in Perl die zugleich positiv und negativ sind.

mfg Beat

--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische