in reply to Parsing a multiline data structure
produces:use strict; my %object; open IN, '<'.pop or die "can't open data: $!\n"; until(<IN> =~ /^object\s*\{/) {}; #skip ahead to the body of the fir +st object{} my($id, $origin, $dims); while(<IN>) { SWITCH: { /id "(.+)"/ && do { $id = $1; last SWITCH; }; /origin \{ (\d+) (\d+) \}/ && do { $origin = "$1,$2"; last SWITCH; }; /dimensions \{ (\d+) (\d+) \}/ && do { $dims = "$1,$2"; last SWITCH; }; (/^object\s*\{/ || eof(IN)) && do { $object{$id}{'origin'} = + $origin; $object{$id}{'dims'} = + $dims; }; # default: on to the next line }#SWITCH } foreach my $id (keys %object) { print "$id: "; foreach my $attr (keys %{$object{$id}} ) { print "$attr = $object{$id}{$attr} "; } print "\n"; }
DAILY.evo: origin = 0,0 dims = 9360,130 1400.cm1: origin = 0,130 dims = 900,1
--
I'd like to be able to assign to an luser
|
|---|