Teile des Codes auslagern
Christian Bliß
- perl
Hallo,
Hier die Codes:
1.
-------------------------------
if ($variable1 eq $variable2) {
print "OK";
}
-------------------------------
2.
-----------------------------------------
$if_abfrage = '$variable1 eq $variable2';
if ($if_abfrage) {
print "OK";
}
-----------------------------------------
Warum machen beide Scripte nicht das gleiche?
Wie kann ich den Code der IF-Abfrage auslagern (siehe Script 2) - den müsste ich nämlich dynamisch generieren?
MfG Christian Bliß
Hallo Christian!
if ($variable1 eq $variable2)
$if_abfrage = '$variable1 eq $variable2';
if ($if_abfrage)
Warum machen beide Scripte nicht das gleiche?
Erstmal, ich kann kein Perl, aber trotzdem würde ich sagen, daß es logisch ist, daß es nicht funktioniert.
Was wird denn bei $if_abfrage gemacht, wenn d ues einfach so ausführst?
Für mich sieht das nämlich so aus, als ob du der Variablen if_abfrage den Wert '$variable eq Variable' als "String" zuweist (Lesetip: http://selfhtml.teamone.de/cgiperl/sprache/zeichenketten.htm#regeln).
Und im String wird natürlich kein eq ausgweretet, weil es wie ein eq in jedem anderen Text behandelt wird.
Ohne die single Quotes sollte es meiner ansicht nach funktionieren.
MfG
Götz
Hallo Götz,
if ($variable1 eq $variable2)
$if_abfrage = '$variable1 eq $variable2';
if ($if_abfrage)Warum machen beide Scripte nicht das gleiche?
Weil bei dem einen zwei Variablen auf Gleichheit geprüft werden und
bei bem anderen eine Variable auf != 0 geprüft wird.
Erstmal, ich kann kein Perl, aber trotzdem würde ich sagen, daß es
logisch ist, daß es nicht funktioniert.
Ja ;)
Für mich sieht das nämlich so aus, als ob du der Variablen
if_abfrage den Wert '$variable eq Variable' als "String" zuweist
Ja.
Ohne die single Quotes sollte es meiner ansicht nach funktionieren.
Nein. Es ist trotzdem noch ein String. Diesmal nur mit den Werten der
beiden Variablen.
Grüße,
CK
Ohne die single Quotes sollte es meiner ansicht nach funktionieren.
Nein. Es ist trotzdem noch ein String. Diesmal nur mit den Werten der beiden Variablen.
Also was kann ich machen? Ich möchte die if-Abfrage außerhalb der Klammer generieren!
Hallo Christian,
Nein. Es ist trotzdem noch ein String. Diesmal nur mit den Werten
der beiden Variablen.Also was kann ich machen? Ich möchte die if-Abfrage außerhalb der
Klammer generieren!
Warum? Nenn mal ein bisschen mehr Informationen.
Grüße,
CK
Hallo Christian,
Nein. Es ist trotzdem noch ein String. Diesmal nur mit den Werten
der beiden Variablen.Also was kann ich machen? Ich möchte die if-Abfrage außerhalb der
Klammer generieren!Warum? Nenn mal ein bisschen mehr Informationen.
Weil der Ausdruck dynamisch generiert wird, je nach Eingabe.
Es werden Suchbgriffe eingetragen und "verunded".
Bsp:
Eingabe:
"der die das"
if-Ausdruck:
($name =~ m/der/i) and ($name =~ m/die/i) and ($name =~ m/das/i)
Dieser if-Ausdruck muss nun in die Abfrage.
MfG Christian Bliß
Hallo Christian Bliß,
Weil der Ausdruck dynamisch generiert wird, je nach Eingabe.
Es werden Suchbgriffe eingetragen und "verunded".
Bsp:Eingabe:
"der die das"if-Ausdruck:
($name =~ m/der/i) and ($name =~ m/die/i) and ($name =~ m/das/i)
sub check {
my $str = shift;
my @terms = @_;
foreach my $term (@terms) {
return if index($str,$term) == -1;
}
return 1;
}
Die Funktion oben nimmt einen String und einen Array von Such-Termen
entgegen und prüft für jeden Ausdruck, ob er enthalten ist. Ist einer
nicht enthalten, wird undef zurück gegeben, ansonsten 1.
Grüße,
CK
Hi,
$if_abfrage = '$variable1 eq $variable2';
Ohne die single Quotes sollte es meiner ansicht nach funktionieren.
Nein. Es ist trotzdem noch ein String. Diesmal nur mit den Werten der
beiden Variablen.
$if_abfrage = $variable1 eq $variable2;
soll ein String sein?
cu,
Andreas
Hallo MudGuard,
$if_abfrage = $variable1 eq $variable2;
soll ein String sein?
Nein. Ich hatte Götz falsch verstanden, ich dachte, er will
Doublequotes statt Singlequotes.
Grüße,
CK
Hi,
Nein. Ich hatte Götz falsch verstanden, ich dachte, er will
Doublequotes statt Singlequotes.
Hm. Wie kommt man von
Ohne die single Quotes sollte es meiner ansicht nach funktionieren.
auf
"Nimm double quotes statt der single quotes"?
Was trinkst Du? Krieg ich auch was von dem Zeug? ;-)
cu,
Andreas
Hallo MudGuard,
Was trinkst Du?
Gerolsteiner Stille Quelle, Medium.
Krieg ich auch was von dem Zeug? ;-)
Davon gehe ich aus ;)
Grüße,
CK
Hi,
Was trinkst Du?
Gerolsteiner Stille Quelle, Medium.
Welcher Jahrgang? ;-)
cu,
Andreas
Hi,
$if_abfrage = '$variable1 eq $variable2';
In single quotes '' werden Variablen nicht durch ihren Wert ersetzt.
Desweiteren weist Du hier der Variable den String zu, nicht jedoch das Ergebnis eines Vergleichs - innerhalb eines Strings werden Operatoren nicht interpretiert.
Wenn Du das Ergebnis des Vergleichs der beiden Variablenwerte in $if_abfrage ablegen willst, laß einfach die Quotes weg.
Warum machen beide Scripte nicht das gleiche?
Warum sollten sie?
cu,
Andreas