ich habs, was das Auslesen der Darei betrifft ein wenig variiert....
#!/usr/bin/perl -w
use strict;
my $such_zahl='([+-]?(?:\d+[.,]\d+|[.,]\d+|\d+)(?:[eE][+-]?\d+)?)'; # !!später ausbessern!!
my $n=-1;
my (%bom, $part, $part_id, $mat_typ, $dichte, $etyp, $contact_thickness, $thickness_scale);
my ($zeilenzahl, @zeilen, $zeile);
open (DAT, "< demo.txt");
$zeilenzahl=0;
while(defined($zeile=<DAT>)){
$zeilen[$zeilenzahl]=$zeile;
$zeilenzahl++;
}
close (DAT);
my $i;
for ($i=0; $i<$zeilenzahl; $i=$i+10) {
$part=$zeilen[$i+3];
$zeilen[$i+4] =~/$such_zahl/, $part_id=$1; print $part_id." | ";
$zeilen[$i+5] =~/$such_zahl/, $mat_typ=$1; print $mat_typ." | ";
$zeilen[$i+6] =~/$such_zahl/, $dichte=$1*1e6; print $dichte." | ";
$zeilen[$i+7] =~/$such_zahl/, $etyp=$1; print $etyp ." | ";
$zeilen[$i+8] =~/$such_zahl/, $contact_thickness=$1; print $contact_thickness." | ";
$zeilen[$i+9] =~/$such_zahl/, $thickness_scale=$1; print $thickness_scale."\n";
$bom{$part_id} = {
pname => $part,
material_type => $mat_typ,
dichte => $dichte,
etyp => $etyp,
contact_thickness => $contact_thickness,
thickness_scale => $thickness_scale
};
}
foreach my $key (keys %bom) {
print "Part ID:".$key."\n";
foreach(keys %{$bom{$key}}) {
print $_.":".$bom{$key}{$_}."\n";
}
}