uninitialized value in $1 Variable nach Regulärem Ausdruck
Schnaps
- perl
0 Struppi0 nurso0 Michael Wronna0 nurso
0 Tobias Kloth
0 Philipp Hasenfratz
Servus
Ich wundere mich über eine Fehlermeldung hier,
die Zeilen wo ich mir das $1 und $2 ausgeben lassen will produzieren eine Fehlermeldung.
Aber warum, ich arbeite mit use strict;
my $test="HUMAN ----EERTLPMLTSACPGWVRYAERVLGRPITAHLCTAKSPQQVMGSLVKDYFARQQ---";
$test=~/(\w*)\s{4,}(\w*)\n/;
#%alignment= ( $1 => $2);
print $1;
print "\n\n\n\n";
print $2;
Wo liegt hier das Problem?
my $test="HUMAN ----EERTLPMLTSACPGWVRYAERVLGRPITAHLCTAKSPQQVMGSLVKDYFARQQ---";
$test=~/(\w*)\s{4,}(\w*)\n/;
du suchst ein Ergebnis vor einem Zeilenumbruch, der ist aber in deinem String nicht drin.
Struppi.
Servus
Ich wundere mich über eine Fehlermeldung hier,
die Zeilen wo ich mir das $1 und $2 ausgeben lassen will produzieren eine Fehlermeldung.Aber warum, ich arbeite mit use strict;
print $1;
Grundlegendes
Variablen werden in PHP dargestellt durch ein Dollar-Zeichen ($) gefolgt vom Namen der Variablen. Bei Variablen-Namen wird zwischen Groß- und Kleinschreibung unterschieden (case-sensitive).
Variablen-Namen werden in PHP nach den gleichen Regeln wie andere Bezeichner erstellt. Ein gültiger Variablen-Name beginnt mit einem Buchstaben oder einem Unterstrich ("_"), gefolgt von einer beliebigen Anzahl von Buchstaben, Zahlen oder Unterstrichen. Als regulärer Ausdruck (regular expression) würde das wie folgt ausgedrückt: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'.
hallo nurso,
Grundlegendes
grundlegend ist, dass ein posting mit einer begruessung
beginnen sollte, und mit einem gruss enden. ein wenig
umgangsformen sollte man schon erwarten koennen. die
meisten die sich mit php beschaeftigen, kennen die
auszeichnung von variablen und das zwischen gross- und
kleinschreibung unterschieden wird. toll dass du dich
so sehr engagierst, aber es geht in diesem fall um die
programmiersprache perl. bitte lese die fragestellung
aufmerksam durch bevor du eine antwort schreibst. dies
mit sonnigen gruessen vom bodensee,
michael
ss:) zu:) ls:& fo:) de:> va:) ch:? n4:& rl:? br:< js:| ie:% fl:{ mo:|
hallo michael
gelobe besserung.
hatte das posting nur überflogen.
also nichts für ungut nurso.
Hallo,
Aber warum, ich arbeite mit use strict;
print $1;
Grundlegendes
Variablen werden in PHP
Der Themenbereich ist Perl - nicht PHP.
Variablen-Namen werden in PHP nach den gleichen Regeln wie andere Bezeichner erstellt. Ein gültiger Variablen-Name beginnt mit einem Buchstaben oder einem Unterstrich ("_"), gefolgt von einer beliebigen Anzahl von Buchstaben, Zahlen oder Unterstrichen.
was aber nichts daran ändert, dass du z.B. bei preg_replace (in Perl ist das genauso) im zweiten Parameter mit $0,$1,$2,... und $9 arbeiten kannst (siehe http://de3.php.net/preg_replace).
Als regulärer Ausdruck (regular expression) würde das wie folgt ausgedrückt: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'.
schön kopiert: http://de2.php.net/manual/de/language.variables.php ...
Grüße aus Nürnberg
Tobias
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