### HEADING OF RECORD 1 ####
Logical device ID=08E1
LINE_THAT_DOES_NOT_BOTHER_ME
ANOTHER_LINE_THAT_DOES_NOT_BOTHER_ME
29 8/0/2/1/0.18.152.0.0.6.1 c29t6d1 FA 5eA
30 8/0/3/1/0.17.152.0.0.6.1 c30t6d1 FA 12e
31 8/0/8/1/0.17.150.0.0.6.1 c31t6d1 FA 10eA
32 8/0/9/1/0.18.150.0.0.6.1 c32t6d1 FA 11eA
### HEADING OF RECORD 2 ####
Logical device ID=08E2
LINE_THAT_DOES_NOT_BOTHER_ME
ANOTHER_LINE_THAT_DOES_NOT_BOTHER_ME
29 8/0/2/1/0.18.152.0.0.4.1 c29t4d1 FA 5eA
30 8/0/3/1/0.17.152.0.0.4.1 c30t4d1 FA 12eA
31 8/0/8/1/0.17.150.0.0.4.1 c31t4d1 FA 10eA
32 8/0/9/1/0.18.150.0.0.4.1 c32t4d1 FA 11eA
### HEADING OF RECORD 3 ####
(...)
####
%hash = (
'08E1' => ['c29t6d1','c30t6d1','c31t6d1','c32t6d1'],
'08E2' => ['c29t4d1','c30t4d1','c31t41','c32t4d1'],
(...)
)
####
use strict;
use warnings;
use Data::Dumper;
my %hash;
open ( FH, "powermt display dev=all|");# data stream comes from here
$/ = '';
while () {
my ($id) = ( $_ =~ /Logical device ID=(\w+)/ );
push (@{$hash{$id}}, $1) if /(c\d+t\d+d\d+)/;
}
print Dumper (\%hash);
####
$VAR1 = {
'08E1' => [
'c29t6d1'
],
'08E2' => [
'c29t4d1'
],
(...)