Nothing like an opportunity to improve:
sprintf'%*vX',$",@_
That's 19 characters by my count. Using the internal equivalent of space, plus why pop when you can just fire it in and hope for the best?
Am I correct in assuming the function has to return the string instead of printing it? One character either way.
I also think this only works in Perl 5.6 or better. A test in 5.005_02 fails, printing %*vX In that case, I think a 33 character solution is:
$_=unpack"H*",pop;s/..\B/$& /g;$_
As a note, I would have used @_ in the second one, but under an older version, it would seem that the unpack function is prototyped and this array is rendered to hex 31, which is in fact an ASCII "1". This could save one stroke, for a total of 32.
I do like jmcnamara's innovative solution. | [reply] [Watch: Dir/Any] [d/l] [select] |
printf '%*vX', ' ', pop;
| [reply] [Watch: Dir/Any] [d/l] |
Wow, thanks guys. I learned something useful here.
I knew about %v, or thought I did: I didn't realize it was a modifier, or that I could change the dot to the space!
So (reading the perlfunc docs) what is the meaning of the V modifier? I don't understand the explaination "interpret integer as Perl's standard integer type"
—John
| [reply] [Watch: Dir/Any] |