Bryan R Harris wrote:
Can someone explain this behavior? % perl -e 'print -12.17**0.2, "\n"' -1.64838295714428
This means print(-(12.17 ** 0.2), "\n") because exponentiation has a higher priority than unary minus. (See the table of priorities in perldoc perlop).
% perl -e 'print (-12.17)**(0.2), "\n"' -12.17
This means (print(-12.17)) ** 0.2, "\n" because list operators have a highrt priority than exponentiation. What this does is to print -12.17, and then evaluate the fifth root of the result of the call to print() which should be 1, and immediately discard this value. The newline string after the comma operator is simply thrown away, as if you'd written (print(-12.17)) ** 0.2; "\n";
% perl -e 'print ((-12.17)**(0.2)), "\n"' nan%
This means print((-12.17) ** 0.2), "\n" and Perl prints 'nan' since the fifth root of -12.17 is a complex number. The newline is just thrown away as before..
Yes, the "\n" isn't getting printed for some reason on the 2nd two examples.
Because they're not within the print's parameter list.
Bottom line: -12.17**0.2 ==> -1.65 (-12.17)**(0.2) ==> -12.17 ((-12.17)**(0.2)) ==> nan I have absolutely zero idea what could be going on here... Please help!
HTH, Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>