To simplify: let's say I have an array of numbers, some positive, some negative, some zero, that I want to print out like so:
+1 -4 +3 0 -2 0 -14That is to say, with '+' signs before each positive number. If I use the following code:
my @nums = qw ( 1 -4 3 0 -2 0 -14 ); printf '%+4d', $_ for @nums;
I get plus signs in front of my zeros, which I don't want:
+1 -4 +3 +0 -2 +0 -14In the docs for (s)printf - which incidentally I find very sparse - it says that the '+' flag is used to "prefix (a) positive number with a plus sign". I'm not a mathematician, so I'm prepared to accept that zero is a positive number. But I still don't wan't plus signs in front of my zeros :-(
I've come up with various solutions, and for the moment, my code looks like this:
printf $_ == 0 ? ( '%4d', $_ ) : ( '%+4d', $_ ) for @nums;...but the more I stare at it, the more it looks like line noise. OK, I could expand and comment it; however, my question is, is there a better way?
TIA
dave
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |