http://www.perlmonks.org?node_id=108728


in reply to Re: Did I say perl?!
in thread Did I say perl?!

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.

Replies are listed 'Best First'.
Re: Re: Re: Did I say perl?!
by blakem (Monsignor) on Aug 29, 2001 at 21:05 UTC
    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.