String-Auswertung, wie macht man das?
Romi
- cgi
0 Klaus Mock- perl
0 Romi
Hallo,
habe wiedermal ein Anliegen ...
Ich habe im Script eine String-Variable $txt
Nun will ich diese auswerten.
Wenn die Stringv. den String text1 enthält soll sie den wert 1,8
Wenn sie den String text2 enthält soll sie den wert 2
Wenn sie den String text3 enthält soll sie den wert 2,9
Wenn sie den String text4 enthält soll sie den wert 2,1
Wenn sie den String text5 enthält soll sie den wert 2
Wenn sie den String text6 enthält soll sie den wert 24,8
und Wenn sie den String text7 enthält soll sie den wert 1,12
an eine Variable $txt2 übergeben.
Wie mach ich das am besten?
Und wie kann ich diesen Wert dann ausgeben?
Viele liebe Grüße Romi :o)
Hallo,
(Ich habe das Thema geändert, da es sich bei diesem Problem nicht um ein CGI- sondern um ein, so nehme ich an, Perl-Problem handelt)
Wenn die Stringv. den String text1 enthält soll sie den wert 1,8
[...]
und Wenn sie den String text7 enthält soll sie den wert 1,12
an eine Variable $txt2 übergeben.
Wa verstehst Du unter 'enthält'? Meinst Du daß die Variable _genau_ diesen Wert hat, oder daß ein Teil dieser Variable diesen Wert hat.
Bei ersterem würde ein einfacher Vergleich genügen (eq), oder aber auch die Benutzung eines Hashes, wenn diese Zuweisungen mehrmals notwendig sind.
Bei zweiterem müßtest Du mit einer regex auswerten. Außerdem brauchst Du, außer Du kannst ein Hash verwenden, noch if, elsif und else an Strukturelementen.
Und wie kann ich diesen Wert dann ausgeben?
print? ;-)
Litraturhinweise: [1]
perldoc perlop (Vergleiche bzw. Regex-Operatoren)
perldoc perlre (Aufbau von regulären Ausdrücken (regex))
perldoc perlsyn (Vor allem der Abschnitt mit Switchstatements)
perldoc -f print (Funtionsweise von print)
Grüße
Klaus
[1] Auch zu finden unter http://www.perldoc.com
Ja, sorry, natürlich Perl :o)
Die Variable hat genau diesen Wert.
Was Perl betrifft, habe ich nicht sehr viel Verständnis.
Wäre also auf freundliche Unterstützung im Forum angewiesen.
Wenn ich mich erst durch die Lektüre ackern muß, wirds nix :o(
Kann mir also einer hier helfen?
VlG Romi.
Hallo,
(Ich habe das Thema geändert, da es sich bei diesem Problem nicht um ein CGI- sondern um ein, so nehme ich an, Perl-Problem handelt)
Wenn die Stringv. den String text1 enthält soll sie den wert 1,8
[...]
und Wenn sie den String text7 enthält soll sie den wert 1,12
an eine Variable $txt2 übergeben.
Wa verstehst Du unter 'enthält'? Meinst Du daß die Variable _genau_ diesen Wert hat, oder daß ein Teil dieser Variable diesen Wert hat.
Bei ersterem würde ein einfacher Vergleich genügen (eq), oder aber auch die Benutzung eines Hashes, wenn diese Zuweisungen mehrmals notwendig sind.
Bei zweiterem müßtest Du mit einer regex auswerten. Außerdem brauchst Du, außer Du kannst ein Hash verwenden, noch if, elsif und else an Strukturelementen.
Und wie kann ich diesen Wert dann ausgeben?
print? ;-)
Litraturhinweise: [1]
perldoc perlop (Vergleiche bzw. Regex-Operatoren)
perldoc perlre (Aufbau von regulären Ausdrücken (regex))
perldoc perlsyn (Vor allem der Abschnitt mit Switchstatements)
perldoc -f print (Funtionsweise von print)
Grüße
Klaus
[1] Auch zu finden unter http://www.perldoc.com
Hallo,
Ja, sorry, natürlich Perl :o)
Perl nur auf CGI-Anwendungen zu reduzieren, ist IMHO äußerst verwerflich;-)
Die Variable hat genau diesen Wert.
Was Perl betrifft, habe ich nicht sehr viel Verständnis.
Wäre also auf freundliche Unterstützung im Forum angewiesen.
Wenn ich mich erst durch die Lektüre ackern muß, wirds nix :o(
Dannsollten wir uns einmal daran machen, Dir mehr Verständnis beizubringen. Einach einen Code-Fetzen hinzuwerfen bringt DIr auch nicht viel, wenn Du ihn nicht verstehst.
Und die Lektüre wird Dir auf Dauer auch nicht erspart bleiben, wenn Du Perl auch weiterhin einsetzen willst. (Daher auch die im Vorposting nenannten Dokumente.)
Aber was sollst, hier ein Crash-Kurs bezüglich deines Problems:
(erwarte Dir aber nicht einen fertigen Code)
Wenn nur unter bestimmten Bedingungen etwas passieren soll, dann benutze bitte fürs erste if, elsif und else:
if($wert == 123) # prüfe auf numerische Gleichheit
{
$wert2 = 9876;
}
elsif($wert eq 'abcdef') #prüfe auf Sting-Gleichheit
{
$wert2 = 8326632;
}
else # was soll passieren, wenn obige Bedingungen nicht erfüllt sind
{
$wert = -1;
}
Diese Anweisungssequenz bewirklt, daß genau einer der Blöcke (das ist das in den geschwungenen Klammern) ausgeführt wird.
Es gibt eine Vielzahl von Vergleichsoperatoren, wobei es jeweils einen Satz für Numerische Vergleiche (==,!=,>,<,>=,<=) gibt und einen für Stringvergleiche (eq,ne,lt,gt,le,ge) gibt.
ALternativ könntest Du auch ein Hash mit den Vorgabewerten füllen:
my %wasauchimmer = ('bedingung1',123,'bedingung2',345,'bedingung3',665);
my $wert2 = $wasauchimmer{$wert1};
$wert2 = -1 unless defined $wert2; # die Anweisung ist nur niotwendig um einen Wert zu definieren, falls keine der Bedingungen im Hash vorhanden waren
Grüße
Klaus
Und weils so wichtig ist:
Litraturhinweise: [1]
perldoc perlop (Vergleiche bzw. Regex-Operatoren)
perldoc perlre (Aufbau von regulären Ausdrücken (regex))
perldoc perlsyn (Vor allem der Abschnitt mit Switchstatements)
perldoc -f print (Funtionsweise von print)
[1] Auch zu finden unter http://www.perldoc.com