{ local $/ = undef; $info = ; } #### use strict; use warnings; use Data::Dumper; my $info; { local $/ = undef; $info = ; } my %lines; while ($info =~ m/(\d+)\: (.+?)\n(?=\d)/gs) { $lines{$1} = $2; } print Dumper (%lines); __DATA__ 3: Tag found Tag found 5: Tag found 7: Tag found 14: Tag found 16: Tag found 18: Tag found 21: Tag found 25: Tag found 27: Tag found 29: Tag found 32: Tag found 34: Tag found 49: Tag found 80: Tag found 98: Tag found Tag found #### $VAR1 = '29'; $VAR2 = 'Tag found'; $VAR3 = '21'; $VAR4 = 'Tag found'; $VAR5 = '7'; $VAR6 = 'Tag found'; $VAR7 = '14'; $VAR8 = 'Tag found'; $VAR9 = '80'; $VAR10 = 'Tag found'; $VAR11 = '32'; $VAR12 = 'Tag found'; $VAR13 = '16'; $VAR14 = 'Tag found'; $VAR15 = '49'; $VAR16 = 'Tag found'; $VAR17 = '25'; $VAR18 = 'Tag found'; $VAR19 = '3'; $VAR20 = 'Tag found Tag found'; $VAR21 = '34'; $VAR22 = 'Tag found'; $VAR23 = '18'; $VAR24 = 'Tag found'; $VAR25 = '27'; $VAR26 = 'Tag found'; $VAR27 = '5'; $VAR28 = 'Tag found';