Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10374[/thread]

[newbie] if struktur



<< >> 6 Einträge, 1 Seite
Gast Gast
 2007-09-11 21:20
#99353 #99353
Hallo,

fange gerade erst mit Perl an und habe ein Problem mit einer if-Anweisung.

Ich habe irgendwo sowas wie:

Code (perl): (dl )
1
2
3
if(/<reg.Ex.>/) {
...
}


Wie kann man dem if jetzt Daten übergeben, auf die es die regEx anwenden kann?

Möglicherweise eine dumme Frage, aber ich komme da nicht weiter.

Chris
Gast Gast
 2007-09-11 21:47
#99354 #99354
Ok, danke, das wird gehen, aber ich glaube mich erinnern zu können, dass in der Klammer nur /regEx/ stand. Geht es auch ohne Variable in der Klammer?
pq
 2007-09-11 21:39
#99355 #99355
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Gast+2007-09-11 19:20:29--
Wie kann man dem if jetzt Daten übergeben, auf die es die regEx anwenden kann?

so?
Code (perl): (dl )
if ($string =~ m/<reg.Ex.>/) { ... }
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Gast Gast
 2007-09-11 22:00
#99358 #99358
Ja wenn der zu überprüfende String in $_ steht.
Code (perl): (dl )
1
2
$_="das ist ein test";
if(/test/){print}

Hier ist "if(/test/)" gleich bedeutend mit "if($_=~/test/)" oder noch länger: "if($_=~m/test/)"

Das macht nur Sinn wenn der zu überprüfende Wert in "$_" steht. Außerdem kann das zu Fehlern führen wenn man "$_" in verschachtelten Abfragen häufiger benutzt. zudem ist "$_" eine globale Variable, und enthält immer den im Programmablauf an ihn übergebenen Wert.
Gast Gast
 2007-09-11 22:09
#99359 #99359
Super, das ist die Erklärung, die ich gesucht hatte.

Vielen, vielen Dank!
bloonix
 2007-09-12 00:01
#99363 #99363
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Gast+2007-09-11 20:09:32--
Super, das ist die Erklärung, die ich gesucht hatte.

Aber bitte komm jetzt nicht auf Idee $_ zu vergewaltigen und jedesmal
$_="foo" zu setzen, nur damit du so eine if-Anweisung verwenden kannst. :-)

Dieser wird in bestimmten Blöcken automatisch gesetzt. Du kannst ihn
zum Beispiel in Schleifen benutzen.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
my @strings = qw/string1 string2 string3/;

for (@strings) {
    if (/meine regex/) {
        # mache etwas
    } else {
        # mache etwas
    }
}


Edit: thx 2 pq for her hints about $_ on irc
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< >> 6 Einträge, 1 Seite



View all threads created 2007-09-11 21:20.