#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my (%data, $device); while (my $line = ){ chomp $line; next if $line =~ /^\s*$/; if ($line =~ /logging to ([\w-]+)/){ $device = $1; next; } push @{$data{$device}}, $line; } print Dumper(\%data); __DATA__ logging to device1 is 2.3.5.1 . . . 56% /var 38% / 31% Interleaved device1 Tue Sep 9 11:26:44 ist 2005 logging to device2 is 2.3.5.1 . . . 96% /var 88% / 100% Interleaved device2 Tue Sep 5 10:26:44 GMT 2005 logging to device5-PPP is 2.3.5.1 . . . 156% /var 138% / 131% Interleaved device1 Tue Sep 9 11:26:44 ist 2005 logging to device8-PPm is 2.3.5.1 . . . 596% /var 688% / 100% Interleaved device2 Tue Sep 5 10:26:44 GMT 2005