You can write this as (24 chars):
map$_[0]>>$_&255,16,8,0
MeowChow
s aamecha.s a..a\u$&owag.print | [reply] [d/l] |
Clever use of binary bit wog. Misunderstood da question - scratch the rest. Off to wipe egg off face and eat some humble pie. I like the unpack pack too. You can shave a couple to 22 by dropping the quotes:
sub hexa_triplet {
unpack xC3,pack N,pop
}
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
| [reply] [d/l] |
I think you may have misunderstood the intent of the original
subroutine. Given an integer, it should produce a list of three
values: red, green, and blue. It does not produce anything like
"0000FF"; rather, given 0x0000FF (note the difference, BTW),
it should produce the list (0, 0, 255). Which it does.
Where you say that it is returning 00255; it actually is not. It's
returning a list containing (0, 0, 255), and when you print that
out, it's getting automatically joined on the empty string, and
so you see 00255.
But the actual usage is like:
my($red, $green, $blue) = hexa_triplet(0x0000FF);
And then the $red, $green, and $blue would be passed into
GD, since that's what the OP needed this for. | [reply] [d/l] |