in reply to insert data into data structure

G'day Genmai,

Welcome to the Monastery.

Your test data is poor:

I also note that, after you previewed posts and saw that they didn't match your real code, you went ahead and posted them anyway. You'll find that monks are not particularly inclined to spend much time responding when the poster can't be bothered to make much effort. Please aim to do better in future: we don't like looking at crap and you're the one who suffers.

Here's the guts of what you (probably) need:

#!/usr/bin/env perl use strict; use warnings; use Data::Dump; my (%data, $topkey); while (<DATA>) { chomp; $data{$topkey}{$1} = $2 and next if /^(.*?)=(.*?)$/; $topkey = $_; } dd \%data; __DATA__ Paragraph1 key1=valueA Paragraph2 key2=valueB key3=valueC Paragraph3

Output:

{ Paragraph1 => { key1 => "valueA" }, Paragraph2 => { key2 => "valueB", key3 => "valueC" }, }

Update: Fixed typo: s/can be bothered/can't be bothered/. Many thanks, hippo, for catching this.

— Ken