Noch schöner finde ich, Variablen zum Einfangen der RegEx-Captures zu verwenden...
z.B.:
use strict;
use warnings;
my ($eins,$zwei) = 'Test im Test' =~ /(es).*(es)/;
print "$eins -- $zwei\n";
($eins,$zwei) = 'Perl ist die beste Sprache' =~ /(es).*(es)/;
print "$eins -- $zwei\n";
Dann kann man auch leichter an den Regulären Ausdrücken etwas ändern. Sonst muss man so viel im Code anfassen.
Beispiel aus:
'Max. 456 Min. 123' =~ /(\d+).*(\d+)/;
print "Maximum ist $1 -- Minimum ist $2\n";
Jetzt ändert sich der String und in der Mitte kommt noch ein Differenzwert, dann müssen mehrere Sachen angepasst werden:
'Max. 456 Diff. 333 Min. 123' =~ /(\d+).*(\d+).*(\d+)/;
print "Maximum ist $1 -- Minimum ist $3 --- Differenz ist $2\n";
Dann vergisst man aber leichter mal das $2 in $3 zu ändern.
Mit Variablen passiert das nicht leicht:
Aus
my ($max,$min) = 'Max. 456 Min. 123' =~ /(\d+).*(\d+)/;
print "Maximum ist $max -- Minimum ist $min\n";
wird
my ($max,$diff,$min) = 'Max. 456 Diff. 333 Min. 123' =~ /(\d+).*(\d+)/;
print "Maximum ist $max -- Minimum ist $min --- Differenz ist $diff\n";
Edit: mit
if(...) sollte man dennoch arbeiten, weil man sonst so viele Warnungen mit "uninitialized value" bekommt...\n\n
<!--EDIT|renee|1181037307-->