2020-02-01T16:50:23
RalphFFM
@zahlen = $segmente =~ /"nodes": \[(?:\s+(\d+),?\n)+/g;
print Dumper \@zahlen;
Da hast Du Dich mit Deinen Testdaten selber aufs Glatteis geführt.
Es landet gar nicht die
erste Zahl im Array, sondern die
letzte. Die beiden sind bei Deinen Testdaten gleich, deswegen sieht man das nicht. Das kommt so:
- Der /g-Modifier zieht nicht, denn "nodes": [ kommt nur einmal vor. Du bekommst also auf jeden Fall nur einen Match, mit oder ohne /g.
- Mit der +-Wiederholung wendet Perl immer wieder die Regex in der Klammer an und überschreibt damit das Ergebnis der ersten Capture.
Du hast ja selbst schon eine Lösung gefunden, in der Du den Präfix abspaltest und dann den "wiederholbaren" Teil mit
/g durchsuchst.