use strict; use warnings; my %cmdData = map {$_ => {opcode => 1, cmd => 2}} ('a' .. 'b'); my %fssaCmd = map {$_ => {fixed_pattern => 1}} (1 .. 6); my $ApidBase = 0; my $ApidOffset = 0; foreach my $cmd (keys %fssaCmd) { my $opcode = sprintf("%x", $fssaCmd{$cmd}{fixed_pattern}); my $apid = sprintf("%x", $ApidBase + $ApidOffset); print("$cmd, 0x$apid, 0x$opcode\n"); $cmdData{"0x$apid"} = {opcode => "0x$opcode", cmd => $cmd}; } foreach my $a (sort keys %cmdData) { print $a. ", " . $cmdData{$a}{opcode} . ", " . $cmdData{$a}{cmd} . "\n"; }