1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
$Data::Dumper::Useqq = 1;
my $segmente = q( "nodes": [
272447305,
272447306,
272447307,
272447308,
272447305
]);
my @zahlen;
@zahlen = $segmente =~ /"nodes": \[\s+(\d+),\n\s+(\d+)/;
print Dumper \@zahlen; # => entspricht der Erwartung, die ersten beiden Zahlen landen im Array.
@zahlen = $segmente =~ /"nodes": \[(?:\s+(\d+),?\n)+/g;
print Dumper \@zahlen; # => klappt nicht. Wieso landet nur die erste Zahl im Array, und nicht alle?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
#!/usr/bin/perl use strict; use warnings; sub PythonDictStringToPerlHash { my $s = shift; my @a = split(/:/, $s); my $key = $a[0]; $key =~ s/"//g; $key =~ s/ //g; my $b = $a[1]; $b =~ s/\n//g; $b =~ s/"//g; $b =~ s/\[//g; $b =~ s/\]//g; $b =~ s/ //g; my @vals = split(/,/,$b); my %h; $h{$key} = \@vals; return \%h; } my $segmente = q( "nodes": [ 272447305, 272447306, 272447307, 272447308, 272447305 ]); my %h = %{PythonDictStringToPerlHash($segmente)}; my @hkeys = keys(%h); my @zahlen = @{$h{$hkeys[0]}}; for my $i (@zahlen) { print "$i\n"; }
2020-02-01T16:50:23 RalphFFMCode (perl): (dl )1 2@zahlen = $segmente =~ /"nodes": \[(?:\s+(\d+),?\n)+/g; print Dumper \@zahlen; # => klappt nicht. Wieso landet nur die erste Zahl im Array, und nicht alle?