If you have a maximum length for your input sprintf may help: sprintf "%016s", EXPR. It will align all your inputs to your max size, although you could still remove the leading \0s. (And I'm assuming you do want a byte string as the output, otherwise hex might help)

requires you to actually have a variable declared
You could use either map or for to alias the value of your EXPR to $_:
print unpack "H*", pack("H*", map { "0" x (length($_) % 2) . $_ } "a12 +"); print unpack "H*", pack("H*", "0" x (length($_) % 2) . $_ ) for "a12";
That's still not pretty (and you could do even worse, with an anonymous sub).

I don't get the issue with your helper function and circular packages though. Can't you just put the fonction alone in a file, in the worst case? Or, if it really comes to it, just redefine it wherever you need, the function is fairly short anyway:

sub zpad { my ($str,) = @_; length($str)%2 ? "0$str" : $str } print unpack 'H*', pack 'H*', zpad "a30"


In reply to Re: Pack uneven length hex by Eily
in thread Pack uneven length hex by melez

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.