Philipp Hasenfratz: uninitialized value in $1 Variable nach Regulärem Ausdruck

Beitrag lesen

Halihallo Schnaps

Ich wundere mich über eine Fehlermeldung hier,

Es sind Warnmeldungen.

die Zeilen wo ich mir das $1 und $2 ausgeben lassen will produzieren eine Fehlermeldung.

Warnmeldung!

Aber warum, ich arbeite mit use strict;

Schön für dich, aber "use warnings" (-w) verursacht die
_Warnmeldungen_, nicht "use strict". Aber schön für uns beide, dass
du beide verwendest.

my $test="HUMAN            ----EERTLPMLTSACPGWVRYAERVLGRPITAHLCTAKSPQQVMGSLVKDYFARQQ---";
$test=~/(\w*)\s{4,}(\w*)\n/;
Wo liegt hier das Problem?

Nun ja, erstens: \n gibts net im String. Das wurde bereits gesagt.
Zweitens: Wenn du den ganzen String matchen willst, solltest du dies
Perl mitteilen: ^ und $ für Stringanfang und -ende setzen.
Drittens: '----' ist kein "Wortzeichen", zweites \w* ist falsch.

Fazit:
my $test="HUMAN            ----EERTLPMLTSACPGWVRYAERVLGRPITAHLCTAKSPQQVMGSLVKDYFARQQ---";
$test=~/^(\w*)\s{4,}(.*?)$/;
print $1;
print "\n\n\n\n";
print $2;

z.B.

Viele Grüsse

Philipp

--
The only program that runs perfectly every time, is a virus.