Repeating element string parsing and iteration

Repeating element string parsing and iteration

am 15.11.2007 06:47:12 von throwaway43054

Hi all! Noob to perl here...


I have widget with X sections, each having Y dimensions. The amount of
sections is dynamic, but amount of dimensions per section is static
(let's say it is always 3 dimensions per section).

I have a scalar which is a comma-delimited string of numeric values
representing values for all the combinations of section and
dimensions, such as:
$data = "value1,value2,value4,value5,value6,value7, ..."
So the first three values belong to first section, values 4-6 belong
to second section and so on.

I also have an array with names of the sections.
@sections= ("A, B, C, D");

I also have names for the dimenstions:
@dim_names = ("Xpos", "Ypos", "Zpos")'

I want to build a hash such as:
%section_data = qw/
"A-Xpos" => "value1",
"A-Ypos" => "value2",
"A-Zpos" => "value3",
"B-Xpos" => "value4",
"B-Ypos" => "value5",
...
...
/;


I'm not really sure how to tackle this. I was thinking of maybe doing
nested loops for section names and dimension names, chipping away at
@data using somehting like /\G.,?/g, but that seem a bit awkward and I
would love to know a better way. Any help is much appreciated.
Abstract code samples would be great! Thanks in advance!

Re: Repeating element string parsing and iteration

am 15.11.2007 08:31:42 von krahnj

"throwaway43054@gmail.com" wrote:
>
> I have widget with X sections, each having Y dimensions. The amount of
> sections is dynamic, but amount of dimensions per section is static
> (let's say it is always 3 dimensions per section).
>
> I have a scalar which is a comma-delimited string of numeric values
> representing values for all the combinations of section and
> dimensions, such as:
> $data = "value1,value2,value4,value5,value6,value7, ..."
> So the first three values belong to first section, values 4-6 belong
> to second section and so on.
>
> I also have an array with names of the sections.
> @sections= ("A, B, C, D");
>
> I also have names for the dimenstions:
> @dim_names = ("Xpos", "Ypos", "Zpos")'
>
> I want to build a hash such as:
> %section_data = qw/
> "A-Xpos" => "value1",
> "A-Ypos" => "value2",
> "A-Zpos" => "value3",
> "B-Xpos" => "value4",
> "B-Ypos" => "value5",
> ...
> ...
> /;
>
> I'm not really sure how to tackle this. I was thinking of maybe doing
> nested loops for section names and dimension names, chipping away at
> @data using somehting like /\G.,?/g, but that seem a bit awkward and I
> would love to know a better way. Any help is much appreciated.
> Abstract code samples would be great! Thanks in advance!

Something like (UNTESTED):

my @fields = split /,/, $data, -1;
my %section_data;
for my $section ( @sections ) {
for my $dim_name ( @dim_names ) {
$section_data{ "$section-$dim_name" } = shift @fields;
}
}



John
--
use Perl;
program
fulfillment

Re: Repeating element string parsing and iteration

am 15.11.2007 08:49:35 von Martijn Lievaart

On Wed, 14 Nov 2007 21:47:12 -0800, throwaway43054@gmail.com wrote:

> Hi all! Noob to perl here...
>

Hi,

> I want to build a hash such as:
> %section_data = qw/

You don't want qw her, just an opening parenthesis.

> "A-Xpos" => "value1",
> "A-Ypos" => "value2",
> "A-Zpos" => "value3",
> "B-Xpos" => "value4",
> "B-Ypos" => "value5",
> ...
> ...
> /;
>
>
> I'm not really sure how to tackle this. I was thinking of maybe doing
> nested loops for section names and dimension names, chipping away at
> @data using somehting like /\G.,?/g, but that seem a bit awkward and I
> would love to know a better way. Any help is much appreciated. Abstract
> code samples would be great! Thanks in advance!

Your direction is sound. Something like (untested):

my @data = split(/,/, $data);

my %section_data;
for my $section = (@sections) {
for my $dim = (@dim_names) {
$section_data{"$section-$dim"} = shift @data;
}
}

Or shorter:

my @data = split(/,/, $data);

my %section_data;
for my $section = (@sections) {
$section_data{"$section-$_"} = shift @data
for (@dim_names);
}

Any shorter would be obfuscation IMO.

HTH,
M4

Re: Repeating element string parsing and iteration

am 15.11.2007 23:57:14 von throwaway43054

Thank you both!