#!/usr/bin/env perl

use strict;
use warnings;

my ($device_file, $model, $hardware_class, $size);

#open pipe with hwinfo
open(my $cmd_out, '-|', "hwinfo --disk") or
	die "Unable to execute hwinfo: $!";

while(<$cmd_out>){
	chomp;
	s/^\s+//;
	s/\s+$//;

	if (/^[0-9]+:.*\sDisk$/i){
		if (defined $size){
			print "$device_file $hardware_class $size $model\n";
			undef $device_file;
			undef $hardware_class;
			undef $size;
			undef $model;
		} else {
			next;
		}
	} elsif (/^Device\sFile:\s+\/dev\/(.+)\s.*$/i) {
		$device_file = $1;
	} elsif (/^Hardware\sClass:\s+(.+)$/i) {
		$hardware_class = $1;
	} elsif (/^Size:\s(.+)$/i) { 
		$size = $1;
		if ($size =~ /([0-9]+)\ssectors\sa\s([0-9]+)\sbytes/i){
			$size = $1 * $2;
		}
	} elsif (/^Model:\s+(.+)$/i) {
		$model = $1;
		$model =~ s/"//g;
	}
}

print "$device_file $hardware_class $size $model\n" if defined $size;

