Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

A twisty little maze of ampersands, all different

by haj (Curate)
on Jun 08, 2021 at 22:54 UTC ( #11133670=obfuscated: print w/replies, xml ) Need Help??

The following code prints a 0, a 1, a 2, and an empty line. But which is which?
use 5.020; sub one { 1 } sub two { 2 } say one&two ; say &one&two ; say &one&&&two ; say &&&one&&&two;

It is not that difficult to figure out, it was a accidental discovery while messing around with syntax highlighting. For the friends of JAPH, here's one with five consecutive ampersands:

use 5.020; sub s { say }; $_ = 'Jusst another Perl hacker'; s&s&&&&&s

Replies are listed 'Best First'.
Re: A twisty little maze of ampersands, all different
by kcott (Bishop) on Jun 09, 2021 at 06:49 UTC

    G'day haj,

    ++ That's very interesting. Using

    perl -MO=Deparse,p -E 'sub one {1} sub two {2} say <ampersand-part>'

    I get:

    one&two : say one(&two); &one&two : say &one & two(); &one&&&two : say &one && &two; &&&one&&&two : &two if say $_ and &one;

    Just for completeness, each of those is preceded by:

    use feature 'current_sub', 'bitwise', 'evalbytes', 'fc', 'postderef_qq +', 'say', 'state', 'switch', 'unicode_strings', 'unicode_eval'; sub one { 1; } sub two { 2; }

    and ends with:

    -e syntax OK

    And I'm using 5.34.0.

    — Ken

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: obfuscated [id://11133670]
Front-paged by Discipulus
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2021-06-24 16:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What does the "s" stand for in "perls"? (Whence perls)












    Results (130 votes). Check out past polls.

    Notices?