in reply to Help with parsing a file

This looks very different to what you presented first, especially "F11-1" doesn't fit any description yet.

Furthermore I have to express great doubt, that the desired output is really clever.

> showing 2 blocks only (the actual file has 61).

61 blocks and 9 solvents, means you will have many cases where the same "solvent" is chosen.

Hence your projected hash-keys <solvent>_<F...> will be overwritten each time you have such a collision. (hash keys are unique!!!)

Do you really want the data of max 9 last different solvents only?

I'd say what you really need is an AoH = array of hashes

@res = ( { solvent => 'h2o', F001 => 1.2, F101 => 3.2, ... }, { solvent => 'acetonitrile', F001 => 2.2, F101 => 7.2, ... }, ... );

And of course you have to be sure that there is only one solvent = 0 in each block, otherwise ...

edit

or a HoAoH hash of arrays of hashes

$res{'h20'}[0]{F001}= 2.2; ...

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^2: Help with parsing a file (hash keys are unique)
by Odar (Novice) on May 31, 2022 at 21:40 UTC

    Apologies for the confusion my first attempt to explain the problem caused and not being clear enough about the number of blocks LanX. The blocks are 61 because in the real file there are 61 solvents instead of the truncated solvent list I have provided just to safe space. Very big thank you for providing help on this and also an inspiration for one of the solutions provided by tybalt89.