sub custom_export_device_chassis { my $filename = "$HOME_TMP/device-chassis.csv"; my %data; my $OUT; for my $line (adb_result ('mget text * /^chassis\./ *')) { my ($dev, $child, $attr, undef, $val) = split (" ", $line, 5); $data{$dev}{$child}{$attr} = $val; } for my $line (adb_result ('mget child * /^chassis\./')) { my ($dev, $child, undef, $val) = split (" ", $line, 4); my ($index, $descr) = split (",", $val); $data{$dev}{$child}{descr} = $descr; } open ($OUT, ">", "$filename.tmp") or EXIT_FATAL ("Can't open $filename.tmp: $!"); for my $dev (nat_sort keys %data) { for my $child (sort { nat_cmp ($data{$dev}{$a}{descr}, $data{$dev}{$b}{descr}) } keys %{ $data{$dev} }) { printf $OUT "%s,%s,%s,%s,%s,%s,\"%s\"\n", $dev, $data{$dev}{$child}{model} || "", $data{$dev}{$child}{serial} || "", $data{$dev}{$child}{sw_rev} || "", $data{$dev}{$child}{hw_rev} || "", $data{$dev}{$child}{fw_rev} || "", $data{$dev}{$child}{descr} || ""; } } close $OUT; rename ("$filename.tmp", $filename); }