Bei Verwendung in einem Listenkontext bewirkt %code% , dass %code% alle Übereinstimmungen zurückgibt. Bei Verwendung in einem skalaren Kontext bewirkt %code% , dass %code% bei jeder Verwendung eine Übereinstimmung zurückgibt, und schlägt fehl (gibt undef zurück), wenn keine Übereinstimmungen mehr vorhanden sind, bevor am Anfang der Zeichenfolge erneut begonnen wird. (Sie können dies verhindern, indem Sie %code% verwenden.) Sie können auch die Funktion %code% verwenden, um die Position zu finden oder festzulegen, an der die Übereinstimmung beginnen soll.
Ohne %code% , %code% gibt immer die gleiche Übereinstimmung zurück. Dies entspricht der Einstellung von %code% auf %code% jedes Mal. (In einem Listenkontext gibt %code% stattdessen eine Liste der Captures zurück.)
Mit dem Modifizierer %code% merkt sich die Zeichenfolge den Ort ihrer letzten Übereinstimmung, sodass Sie in einer while-Schleife eine Übereinstimmung mit einem %code% anfordern und alle Übereinstimmungen finden können.
Ohne die %code% beginnen Sie jedes Mal neu und finden immer die erste Übereinstimmung.
In Ihrem Fall haben Sie mit dem %code% beim ersten Mal 3,2 erreicht, aber beim zweiten Versuch, eine Übereinstimmung zu finden, gab es keine Übereinstimmungen mehr.
Ohne die %code% kannst du %code% eine Zillion Mal aufrufen und du wirst immer die erste Übereinstimmung finden.
Mit dem Modifizierer g
merkt sich die Zeichenfolge den Ort ihrer letzten Übereinstimmung, sodass Sie in einer while-Schleife eine Übereinstimmung mit einem g
anfordern und alle Übereinstimmungen finden können.
Ohne die g
beginnen Sie jedes Mal neu und finden immer die erste Übereinstimmung.
In Ihrem Fall haben Sie mit dem g
beim ersten Mal 3,2 erreicht, aber beim zweiten Versuch, eine Übereinstimmung zu finden, gab es keine Übereinstimmungen mehr.
Ohne die g
kannst du getFloat()
eine Zillion Mal aufrufen und du wirst immer die erste Übereinstimmung finden.
Bei Verwendung in einem Listenkontext bewirkt /g
, dass =~
alle Übereinstimmungen zurückgibt. Bei Verwendung in einem skalaren Kontext bewirkt /g
, dass =~
bei jeder Verwendung eine Übereinstimmung zurückgibt, und schlägt fehl (gibt undef zurück), wenn keine Übereinstimmungen mehr vorhanden sind, bevor am Anfang der Zeichenfolge erneut begonnen wird. (Sie können dies verhindern, indem Sie /gc
verwenden.) Sie können auch die Funktion pos($text)
verwenden, um die Position zu finden oder festzulegen, an der die Übereinstimmung beginnen soll.
Ohne /g
, =~
gibt immer die gleiche Übereinstimmung zurück. Dies entspricht der Einstellung von pos($text)
auf undef
jedes Mal. (In einem Listenkontext gibt =~
stattdessen eine Liste der Captures zurück.)