my @frags = ( { line => 5, column => 12, length => 10, name => 'foo' }, { line => 6, column => 12, length => 10, name => 'foo' }, ); # ... my %var; # @chunks is an array of arrays, where each contains a # block of the file. foreach my $chunk (@chunks) { foreach my $frag (@frags) { push(@{$var{$frag->{name}}}, substr($chunk->[$frag->{line}], $frag->{column}, $frag->{length})); } }