Hallo
$_ = chomp($_).",WORT2\n" if($_ =~ /[1]*[^#]?\WORT1\b/ and $check = 1);
........................................................................^
Das ist hier eine Wertzuweisung, keine Überprüfung/Vergleich (==).
hmm, wer so coded ist bestimmt kein Anfänger, aber leider auch kein Profi ...
stell dir vor du schaust dir den Code in einem halben Jahr nochmal an, dann wirste erstmal in die gleiche Falle tappen wie Patrick.
Du verbiegst dir nix wenn du stattdessen schreibst
if( $_ =~ /[2]*[^#]?\WORT1\b/ ) {
$_ = chomp($_).",WORT2\n";
$check = 1;
}
übrigens der Witz beim $_ ist es ihn möglichst oft einzusparen, wenn
du ihn immer explizit nutzt dann nimm lieber einen sprechenden Variablennamen wie $zeile.
deine RegEx ist etwas kryptisch, klamüsern wirs auseinander
m{
^ # anfang der Zeile
[ \t]* # beliebig viele Whitespaces, warum nicht \s* ?
[^#]? # ein oder kein Zeichen dass nicht # ist
\W # ein nicht Wort zeichen
ORT1 # diese Zeichenkette
\b # Wortgrenze
}x
ORT1 naja wohl ein schreibfehler???
das ist übrigens ein gültiger RegEx Code dank des x Flags kannste Leerzeichen und Kommentare einfügen und mit {} statt // wirds auch lesbarer.
Bye
Kurt