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"; } #### 6, 0x0, 0x1 4, 0x0, 0x1 1, 0x0, 0x1 3, 0x0, 0x1 2, 0x0, 0x1 5, 0x0, 0x1 0x0, 0x1, 5 a, 1, 2 b, 1, 2