was ist richtig ne oder !~ und warum ?
Alain
- perl
0 Christian Kruse0 Alain
hallo,
schwierig,schwierig das perl oder php :) ein überblick zu kriegen.
mich beschäftig diese frage warum oder was ist richtig bei
dieser kombination?
if ($ENV{'REMOTE_ADDR'} !~ /Hans/)
oder
if ($ENV{'REMOTE_ADDR'} ne /Hans/)
welches ist jetzt richtig und warum?
und könnte man einen solchen vergleich auch machen wie dieser?
if ($ENV{'REMOTE_ADDR'} ne /Fritz/)&& ($ENV{'REMOTE_ADDR'} !~ /98/)
ich meine damit verschiedene zeichen die eigentlich das gleiche bedeuten
in einer bedingung einbeziehen?
muss man das {'PATH'} erst in als scalar deklarieren?
Gruss Alain
Hallo,
if ($ENV{'REMOTE_ADDR'} !~ /Hans/)
Das ist richtig.
if ($ENV{'REMOTE_ADDR'} ne /Hans/)
Das ist falsch.
welches ist jetzt richtig und warum?
Das eine ist ein String-Vergleich, das andere bindet eine RegEx an den String.
und könnte man einen solchen vergleich auch machen wie dieser?
if ($ENV{'REMOTE_ADDR'} ne /Fritz/)&& ($ENV{'REMOTE_ADDR'} !~ /98/)
Wenn du die Klammersetzung richtig machst und statt des 'ne' (not equal)
ein '!~' schreibst, ja.
ich meine damit verschiedene zeichen die eigentlich das gleiche bedeuten
in einer bedingung einbeziehen?
Die Frage verstehe ich nicht.
muss man das {'PATH'} erst in als scalar deklarieren?
Die verstehe ich auch nicht.
Gruesse,
CK
Hallo,
hallo CK,
danke für die auskunft.
if ($ENV{'REMOTE_ADDR'} !~ /Hans/)
Das ist richtig.
heisst das also das !~ wenn er das wort hans nicht findet?
und ne heisst also wenn das "ganze" nicht wahr ist?
if ($ENV{'REMOTE_ADDR'} ne /Hans/)
Das ist falsch.
welches ist jetzt richtig und warum?
Das eine ist ein String-Vergleich, das andere bindet eine RegEx an den String.
und könnte man einen solchen vergleich auch machen wie dieser?
if ($ENV{'REMOTE_ADDR'} ne /Fritz/)&& ($ENV{'REMOTE_ADDR'} !~ /98/)
Wenn du die Klammersetzung richtig machst und statt des 'ne' (not equal)
ein '!~' schreibst, ja.
jau aber ich meine damit
(($ergebniss} ne /$ergebniss2/)&& ($ENV{'REMOTE_ADDR'} !~ /98/))
ob man "ne" und !~ verwenden darf.
ich meine damit verschiedene zeichen die eigentlich das gleiche bedeuten
in einer bedingung einbeziehen?
Die Frage verstehe ich nicht.
oben ...
muss man das {'PATH'} erst in als scalar deklarieren?
z.B. so
$hans = 0;
$hans = 1 if({'PATH'});
Die verstehe ich auch nicht.
gruss Alain
Gruesse,
CK
Hoi,
if ($ENV{'REMOTE_ADDR'} !~ /Hans/)
Das ist richtig.
heisst das also das !~ wenn er das wort hans nicht findet?
Wenn der String 'Hans' nicht in $ENV{REMOTE_ADDR} enthalten ist, ist der
Ausdruck wahr, ja.
und ne heisst also wenn das "ganze" nicht wahr ist?
'ne' kannst du in dem obigen Zusammenhang nicht anwenden. 'ne' erwartet einen
String, du gibst ihm den //-Operator (der eine Abkuerzung fuer m// ist).
und könnte man einen solchen vergleich auch machen wie dieser?
if ($ENV{'REMOTE_ADDR'} ne /Fritz/)&& ($ENV{'REMOTE_ADDR'} !~ /98/)
Wenn du die Klammersetzung richtig machst und statt des 'ne' (not equal)
ein '!~' schreibst, ja.
jau aber ich meine damit
(($ergebniss} ne /$ergebniss2/)&& ($ENV{'REMOTE_ADDR'} !~ /98/))
ob man "ne" und !~ verwenden darf.
Natuerlich darf man 'ne' und '!~' mit '&&' verknuepfen. Aber 'ne' erwartet
immer noch einen String und keinen Operator. So, wie das mit dem 'ne' da
oben steht, wuerde der Rueckgabewert von '$_ =~ /$ergebnis2/' mit '{$ergebnis}'
verglichen.
muss man das {'PATH'} erst in als scalar deklarieren?
z.B. so
$hans = 0;
$hans = 1 if({'PATH'});
Du meinst IMHO '${PATH}'. Das '$' davor ist wichtig. Das ist eine schlechte
Eigenschaft von Perl, die du nicht verwenden solltest. Benutze lieber einen
Hash.
Gruesse,
CK
hi!
if ($ENV{'REMOTE_ADDR'} !~ /Hans/)
Das ist richtig.
heisst das also das !~ wenn er das wort hans nicht findet?
und ne heisst also wenn das "ganze" nicht wahr ist?
Hier ein Beispiel:
if ($var ne "wort") { ... }
Das bedeutet, dass $var ungleich "wort" sein muss (ne steht für "not
equal"), damit die Bedingung erfüllt ist.
if ($var !~ /wort/) { ... }
Das bedeutet, dass in $var der reguläre Ausdruck /wort/ nicht vor-
kommen darf, damit die Bedingung erfüllt ist.
Beides kann man natürlich mischen. Man kann ja alle logischen Aus-
drücke durch Klammern und logische Operatoren wieder miteinander
verbinden. Beispiel:
if ($var ne "wort" and $var !~ /test/) { ... }
Das ist also ohne Probleme möglich.
bye, Frank!
besten dank an euch beiden,
jetzt ist mir das klar :-)
grüsse vom Alain