#! /usr/bin/perl -w use strict; use warnings; my %Entries; my $LsHal = '/usr/bin/lshal'; open (LSHAL, '-|',  $LsHal) or die "could not start $LsHal: $!"; # "Paragraph Mode" - ein oder mehr Leerzeilen gelten als Trenner $/ = ""; # Die Schleide geht jetzt ueber einzelne Absaetze while () {    # In einzelne Zeilen aufteilen    my ($key, @lines) = split /\n/;    # Das 'udi = ' am Anfang der ersten Zeile    # und die Anfuehrungszeichen loeschen    $key =~ s/^udi\s*=\s*'(.*)'/$1/;    # Leerzeichen am Anfang der anderen Zeilen loeschen    s/^\s+// for @lines;    # Einen Untereintrag fuer jede Zeile anlegen, wobei    # der Teil vor dem ' = ' als Schluessel, der Teil dahinter    # als Wert genommen wird.    my %subentries = map { split /\s*=\s*/, $_, 2 } @lines;    # Untereintraege unter $key speichern    $Entries{$key} = \%subentries; } # Testausgabe use Data::Dumper; print Dumper \%Entries; exit 0;