# XlateHexcode.pm package XlateHexcode; use warnings FATAL => 'all' ; use strict; my %lookup = ( '80' => [ 'TEST', 'TEST SYSTEM', ], '81' => [ 'TOOL', 'REFERENCE TOOL', ], '82' => [ 'DEBUG', 'DEBUG SYSTEM', ], 'A0' => [ 'ARC', 'ARCADE SYSTEM', ], '83' => [ 'CEX', 'Japan', ], '84' => [ 'CEX', 'United States', ], '85' => [ 'CEX', 'Europe', ], '86' => [ 'CEX', 'Korea', ], '87' => [ 'CEX', 'United Kingdom', ], '88' => [ 'CEX', 'Mexico', ], '89' => [ 'CEX', 'Australia', ], '8A' => [ 'CEX', 'South Asia', ], '8B' => [ 'CEX', 'Taiwan', ], '8C' => [ 'CEX', 'Russia', ], '8D' => [ 'CEX', 'China', ], '8E' => [ 'CEX', 'Hong Kong', ], '8F' => [ 'CEX', 'Brazil', ], ); my $nzhp = qr{ (?! 00) [[:xdigit:]]{2} }xms; # non-zero hex pair sub xlate { my ($data, ) = @_; $data =~ m{ \A (?: 00 ($nzhp) | ($nzhp) 00) \z }xms or die "'$data' does not have non-zero hex pair"; my $hcp = $1 || $2; # hex code pair $hcp = uc $hcp; exists $lookup{$hcp} or die "unknown hex code pair: '$hcp'"; return @{ $lookup{$hcp} }; } # end sub xlate() 1;