Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re^7: Parrot Monks? (one ring)

by TimToady (Parson)
on Jan 10, 2005 at 18:25 UTC ( #421028=note: print w/replies, xml ) Need Help??

in reply to Re^6: Parrot Monks? (one ring)
in thread Parrot Monks?

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...

Replies are listed 'Best First'.
Re^8: Parrot Monks? (one ring)
by tye (Sage) on Jan 10, 2005 at 18:44 UTC

    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://421028]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2017-11-24 11:37 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (348 votes). Check out past polls.