Hallo peter
=~ gibt ja bloss wahr oder falsch zurück (und speichert dies in @bild). der wert von (.*?) wird ja in $1 gespeichert; der wird jedoch nirgendwo abgegriffen.
Nein, in solchen Fällen werden die Ergebnisse nicht nur in $1, $2,... zurückgeliefert, sondern auch als return-Wert(e), was innerhalb eines if als true gilt (schlägt das Regex fehl, wo wird nichts zurückgeliefert, was im if einem false entspricht).
zB:
$a = "abc";
($x) = $a =~ /^.(b)/;
$1 = "b"
$x = "b"
($x,$y) = $a =~ /^(a)(b)/;
$1 = "a", $2 = "b"
$x = "a", $y = "b"
und wenn unbekannt ist, wieviel zurückkommt dann eben
zB.
@ret = $a =~ /./g;
Schau Dir am besten 'mal die Perldokumentation perlre an.
Manfred