http://qs321.pair.com?node_id=108716


in reply to Did I say perl?!

I can deconstruct this one.....

System() . out() . print ("Just another perl hacker?");

Very clever, though it doesn't stand a chance under use strict

-Blake

Replies are listed 'Best First'.
Re: Re: Did I say perl?!
by BooK (Curate) on Aug 29, 2001 at 14:32 UTC

    Not quite. In fact perl -MO=Deparse will tell you what it was compiled into.

    'Systemout' . print('Just another perl hacker?');

    And -w would have given you a few answers:

    Unquoted string "out" may clash with future reserved word.
    Useless use of concatenation in void context.

    Whereas use strict; misguided you by making reference to strict subs.

      So is this one of those instance where perl will do different things based on what subs are defined?

      When I try:

      #!/usr/bin/perl -w use strict; sub System { print "System\n"; } sub out { print "out\n"; } System.out.print("Just another perl hacker?");
      I get no errors and it prints both "System" and "out"....

      Update:

      #!/usr/bin/perl # comment out these two lines to change meaning of construct in main sub System { return "SystemSub " } sub out { return "OutSub " }; my $val = main(); print "\n'$val'\n"; sub main { System.out.print("Just another perl hacker?"); }

      -Blake

        Yes, this is called the "poetry optimization" since its reason for existing was partly to make it easier to write poetry in Perl.