* Yuki Kimoto <kimoto.yuki@gmail.com> [2022-06-07 09:16:22 +0900]: > 2022-6-7 7:07 Neil Bowers <neilb@neilb.org> wrote: > > > This is a retrospective Pre-RFC for a proposal from Curtis, for which he > > submitted a draft RFC[1]. We nearly missed it when reviewing proposals > > in-flight in our PSC meeting last week, and decided to trigger a discussion > > here, to reinforce the process. > > > > ... > > > > [1] https://github.com/Perl/RFCs/pull/16 > > > > > I want to hear the haarg' proposal a little more. > > >There is another model that could be used. could always ignore the return > value from the file if the feature was enabled. This is simpler than the > previous option, but accomplishes essentially the same thing. It still > needs special handling in , but doesn't need to care about an implicit vs > explicit return. In practice, the return value from a ed file is not usable > for anything. The only impact it will have on perl's behavior is throwing > an error for a false value. This is better done by throwing a real error. > If there is no real purpose for returning an explicit value, why complicate > the model by trying to handle specially? > > Does this mean changing the behavior of "use", "require", "do" in the > "yield_true" > feature? I can't find a good read on what the "1;" is for; I just know it needs to be there and can be anything "truthy". I've even seen cheeky module authors return "666;", which to be fair is true. However, upon reading what I could find in perldocs and about, it seems that if it is a "1;" or something else; C<use>, C<require>, and C<do> all need something to say definitively that "here is the end of package Foo's scope". Would that be a "feature" or just something internal that could mark the "end" of a package scope when it hit something like the end of the file? FWIW, I don't find this an issue; I've been doing it for along time. Maybe what is needed a macro like "__END__" or a keyword like "egakcap;" that simply returns something truthy. I mean the target audience seems to be the human being who is perusing googlestackoverflow about "how to write a Perl module" ... this seems more clear than either the "1;" or literally nothing; and it's kind of unix-y. package Foo; ... ... egakcap Foo; Or something a little heredoc-y: package Foo; ... ... Foo; # or for a little flexibility, __PACKAGE__ Or wouldn't this suffice? package Foo; ... ... package main; Or perhaps just encourage the use of lexical blocks when defining packages. Since that since to indicate precisely the area of scope that "1;" is meant to disambiguate (at the end of a file?). I know this is about removing the "need" for "1;" but I think the real need is to provide a more obvious "end of package scope" marker, which ultimately really just needs to return a truthy value. Cheers, Brett -- -- oodler@cpan.org oodler577@sdf-eu.org SDF-EU Public Access UNIX System - http://sdfeu.org irc.perl.org #openmp #pdl #nativeThread Previous | Thread Next