#!/usr/bin/perl use strict; use warnings; #print "Hello, World...\n"; my $in_decimal = 0; sub dec2hex($) { my $decnum = shift; # parameter passed to the subfunction my $hexnum = ""; # the final hex number my $tempval; while ($decnum != 0) { # get the remainder (modulus function) # by dividing by 16 $tempval = $decnum % 16; # convert to the appropriate letter # if the value is greater than 9 if ($tempval > 9) { $tempval = chr($tempval + 55); } # 'concatenate' the number to # what we have so far in what will # be the final variable $hexnum = $tempval . $hexnum ; # new actually divide by 16, and # keep the integer value of the # answer $decnum = int($decnum / 16); # if we cant divide by 16, this is the # last step if ($decnum < 16) { # convert to letters again.. if ($decnum > 9) { $decnum = chr($decnum + 55); } # add this onto the final answer.. # reset decnum variable to zero so loop # will exit $hexnum = $decnum . $hexnum; $decnum = 0 } } return $hexnum; } # end sub if (@ARGV) { $in_decimal = pop @ARGV; print "Decimal [$in_decimal] = hex [" . dec2hex($in_decimal) . "] ...\n"; } else { print "Usage: $0 decimal\n"; } exit(0);