According to the Examples section at the documentation for Win32::TieRegistry you can use or die() statements when fetching the key values. It can give you good clues to what has happened and where the program has failed. Also, printing out the value of $mykeyval2 before the system() function attempts to run it is a good idea for debugging.
$diskKey= $Registry->{"LMachine/System/Disk/"}
or die "Can't read LMachine/System/Disk key: $^E\n";
$data= $key->{"/Information"}
or die "Can't read LMachine/System/Disk//Information value: $^E\n
+";