http://qs1969.pair.com?node_id=94173


in reply to Re: (GOLF) splitting an hexadecimal colour triplet
in thread (GOLF) splitting an hexadecimal colour triplet

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

Replies are listed 'Best First'.
Re (3): (GOLF) splitting an hexadecimal colour triplet
by btrott (Parson) on Jul 05, 2001 at 21:37 UTC
    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.