Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^4: Binary to decimal conversion

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


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

In list context:

my @array = reverse( LIST );
In scalar context:
my $value = reverse( LIST );
Fine. But it does not say how it's supposed to behave when fed a SCALAR instead of a LIST, does it?

I'm still confused.

--
Andreas


Comment on Re^4: Binary to decimal conversion
Select or Download Code
Replies are listed 'Best First'.
Re^5: Binary to decimal conversion
by Fletch (Chancellor) on Dec 11, 2007 at 13:43 UTC

    Erm . . . a LIST may consist of a single scalar value. That single scalar value is concatenated with all the other elements in the LIST (very quickly, obviously, since they're non-existent) and the bytes in that concatenated string (i.e. the single scalar argument) are returned in reverse order, just like the docs say.

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

      Then tell me why this prints hello and not olleh?
      $ perl -wle 'print reverse(q{hello})' hello
      --
      Andreas

        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.

        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://656382]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (13)
As of 2015-07-07 19:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls