Hi darisler,
Trying to write some code that reads in a list of coordinates, must have an odd number for some odd reason... but I'd like to know how to define '$coords' recursively
Do you have to define '$coords' recursively or repeatedly? And I don't know why you are using your regex like you are doing. If I get what you wanted, you can simply use split to get all the coords into an array, so they are in right order as follow in your original string, then loop for this like so:
use v5.16;
use strict;
my $prBoundaryString = <<endPrBoundary;
'( (0.01 0.02) (0.0 1328.23) (0.01 0.02) (0.04 0.53) (0.03 44.23)
(0.0 1328.23) (0.04 0.53)
)
endPrBoundary
say "prBoundaryString=$prBoundaryString";
my @pts = grep { /\d+/ } split /\s+|[()]/, $prBoundaryString;
my $count = 0;
for ( 0 .. $#pts ) {
if ( $_ % 2 == 0 ) { print qq[-x$count=$pts[$_]] }
else { print qq[-y$count=$pts[$_]]; $count++ }
}
Output:
prBoundaryString='( (0.01 0.02) (0.0 1328.23) (0.01 0.02) (0.04 0.53)
+(0.03 44.23)
(0.0 1328.23) (0.04 0.53)
)
-x0=0.01
-y0=0.02
-x1=0.0
-y1=1328.23
-x2=0.01
-y2=0.02
-x3=0.04
-y3=0.53
-x4=0.03
-y4=44.23
-x5=0.0
-y5=1328.23
-x6=0.04
-y6=0.53
Note: I modified the string you gave to show that it would get it in right order.
Hope this helps
If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author
unknown to me