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

(tye)Re: how to use several modules by default?

by tye (Sage)
on Nov 22, 2000 at 20:16 UTC ( #42949=note: print w/replies, xml ) Need Help??


in reply to Re: how to use several modules by default?
in thread how to use several modules by default?

The simple answer is that it is a bug in Perl.

Looking at perl.c shows that PERL5OPT is mostly processed via PERL_moreswitches() which mentions:

/* We allow -M'Module qw(Foo Bar)' */
which seems strange. My guess is that PERL_moreswitches() was "enhanced" to allow this new usage by someone who didn't realize how this badly breaks #! and PERL5OPT.

        - tye (who wishes he had a revision-controlled copy of the Perl source)

Replies are listed 'Best First'.
Re: (tye)Re: how to use several modules by default?
by Fastolfe (Vicar) on Nov 22, 2000 at 20:53 UTC
    This isn't quite the same.

    -M'Module qw(Foo Bar)' is one argument. The space in there is held within the single quotes, so I wouldn't think this would have any effect on multiple -M flags, unless the implementation is broken (which I suspect is the case).

      Sorry, I wasn't clear and neither is the comment that I quoted. PERL_moreoptions() is passed a string (not, for example, a list of strings) and it doesn't handle quotes. What I meant to describe is that PERL_moreoptions() doesn't look for a new option after seeing a space after "-M" nor after "-m". Either that needs to happen or PERL5OPT needs to be split on whitespace and the resulting values passed ot PERL_moreoptions() one at a time.

      I would think that PERL_moreoptions() should be looking for spaces, otherwise it needs to be renamed PERL_onemoreoption().

      I'm sorry that this is a very quick reply as duty calls. Obviously more research is needed.

              - tye (but my friends call me "Tye")
        So if @ARGV contains the equivalent of, say, ('-Mstrict', '-Mdiagnostics'), PERL_moreoptions() sees this as if the elements were joined together? If so, I agree that that is a huge implementation flaw. It's perfectly valid to have ('-Mmodule qw(foo bar)', '-Mstrict'), which is what -M'module qw(foo bar)' would have given you, but joining them together loses the ability to differentiate. :(

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://42949]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (3)
As of 2022-05-22 14:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (80 votes). Check out past polls.

    Notices?