Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re^6: Parrot Monks? (one ring)

by tye (Sage)
on Jan 09, 2005 at 22:28 UTC ( #420761=note: print w/replies, xml ) Need Help??

in reply to Re^5: Parrot Monks? (pirates)
in thread Parrot Monks?

I'd rather have the Perl language specify how you tell Perl 5 code from Perl 6 code so that the problem is solved all over the world instead of each place that shows Perl code trying to come up with their own inconsistent ways of doing so such that none of them will ever be very thoroughly applied.

- tye        

Replies are listed 'Best First'.
Re^7: Parrot Monks? (one ring)
by TimToady (Parson) on Jan 10, 2005 at 18:25 UTC
    There are several defined ways of differentiating scripts as a whole. A minimal approach allows for a bare literal in void context at the beginning:
    5; print "I'm Perl 5 code\n";
    6; say "I'm Perl 6 code";
    Or if you want to make sure strictness is on, you use
    use 6.0;
    Those are okay for the script as a whole, but I hate to think about what happens when people start cutting and pasting snippets. Certainly Perl 6 could disallow snippets starting with "5;", but Perl 5 would currently accept a "6;" unless you had warnings turned on. One could go with "5:" and "6:" instead, but that's a syntax error in Perl 5 currently.

    Of course, there's always the tried and true:

    print "I'm Perl 5 code\n"; # Perl 5
    say "I'm Perl 6 code"; # Perl 6
    But that doesn't help much with cut-and-paste errors...

      I don't expect Perl to be able to prevent people from pasting VB code into the middle of a Perl script. Neither do I require that Perl to be able to jump between versions of the language willy-nilly (though a limited version of such a feat wouldn't surprise me much). (:

      My point is to have a standard way for people to declare what language they are using and have that way make sense to both the Perl interpretter and to other humans reading their code. If a person cuts and pastes snippets, then they should cut'n'paste snippets of the same language (not an unreasonable requirement).

      I like "use 5;" and "use 6;" a lot because they are quite clear and will make sense to people who know very little about Perl 6 (and will work at the top of snippets to the point of complaining clearly, even with a lot of cut'n'pasting).

      I also like the various Perl6 ways of turning strictures on like "module;".

      It would be cool if "use strict;" also forced Perl 5 interpretation [since that isn't how you turn on strictures in Perl6, though I suspect "no strict qw(...)" still works there(?)]. This way, a huge volume of existing code will "just (continue to) work" and will also be automatically labeled as "this is Perl 5 code".

      - tye        

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://420761]
[LanX]: ah... Denmark is planning to build a wall at the German border!
[LanX]: # Pestis Africana Suum
[erix]: that's an old plan, I think. Isn't there already a danewal (or some such name)?
[marto]: Build with -Wall
[erix]: Danewerk
[LanX]: I seem to remember that the danewall was build by the Frankish empire against the Danes
[erix]: 500 AD thru viking age
[erix]: that would make sense but wikipedia thinks otherwise
[LanX]: oh me was wrong ...
[erix]: but it always works both ways of course

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (11)
As of 2018-03-22 18:38 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (283 votes). Check out past polls.