use strict; use warnings; use Data::Dumper; my %Hash = (); while () { chomp; $Hash{line$.} = $_; } print Dumper(\%Hash); __DATA__ param :PREFIX|numeric|sTAP|null param :CLK_PERIOD|numeric|10000|null param :STAP_NUMBER_OF_BITS_FOR_SLICE||16|null param :STAP_SIZE_OF_EACH_INSTRUCTION|numeric|8|8-100 param :STAP_ENABLE_VERCODE|boolean|0