Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re^6: Binary to decimal conversion

by andreas1234567 (Vicar)
on Dec 11, 2007 at 13:57 UTC ( #656407=note: print w/ replies, xml ) Need Help??


in reply to Re^5: Binary to decimal conversion
in thread Binary to decimal conversion

Then tell me why this prints hello and not olleh?

$ perl -wle 'print reverse(q{hello})' hello
--
Andreas


Comment on Re^6: Binary to decimal conversion
Select or Download Code
Re^7: Binary to decimal conversion
by Fletch (Chancellor) on Dec 11, 2007 at 14:02 UTC

    Because print takes a LIST and hence provides a list context to reverse which triggers the list context behavior from the latter (and a 1 element list reversed is indistinguishable from the original 1 element list for obvious reasons). Stick a scalar in there after the print, and/or store the reverse into a scalar temporary variable, and you'll see the behavior you're expecting.

    The cake is a lie.
    The cake is a lie.
    The cake is a lie.

      Said code (and then some):
      $\ = "\n"; print(my @a = reverse('hello')); # hello (order or scalars reversed) print(my $s = reverse('hello')); # olleh (order of chars reversed) print(reverse('hello')); # hello (order or scalars reversed) print(scalar(reverse('hello'))); # olleh (order of chars reversed) sub f(@) { return @_; } sub g($) { return @_; } print(f(reverse('hello')); # hello (order or scalars reversed) print(g(reverse('hello'))); # olleh (order of chars reversed)
Re^7: Binary to decimal conversion
by Anonymous Monk on Dec 12, 2007 at 08:34 UTC
    Because you did not RTFM :)
    reverse LIST In list context, returns a list value consisting of the elemen +ts of LIST in the opposite order. In scalar context, concatenates the elements of LIST and returns a string value with all characters in the opposite order. print reverse <>; # line tac, last line first undef $/; # for efficiency of <> print scalar reverse <>; # character tac, last line tsr +if Used without arguments in scalar context, reverse() reverses $ +_. This operator is also handy for inverting a hash, although the +re are some caveats. If a value is duplicated in the original has +h, only one of those can be represented as a key in the inverted hash. Also, this has to unwind one hash and build a whole new one, which may take some time on a large hash, such as from a DBM file. %by_name = reverse %by_address; # Invert the hash

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://656407]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2014-09-17 05:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (57 votes), past polls