in reply to Re: ExtUtils::Embed function sequence affect output?
in thread ExtUtils::Embed function sequence affect output?

This only works by accident. See perlrun (emphasis mine):

This is not by accident, it's documented in perlembed:

perldoc perlembed: Now compile this program (I'll call it *interp.c*) into an executable: % cc -o interp interp.c `perl -MExtUtils::Embed -e ccopts -e ldopts`

I'll presume this usage is official because it document in perldoc. I think perl5 porter should make this clearer. I.E: use perl -MExtUtils::Embed -e'ldopts;' -e'ccopts;' instead.

BTWI can use

perl -MExtUtils::Embed -e'ldopts' && perl -MExtUtils::Embed -e'ccopts'
to get the same result, it looks a little bit silly tho.





I am trying to improve my English skills, if you see a mistake please feel free to reply or /msg me a correction

Replies are listed 'Best First'.
Re^3: ExtUtils::Embed function sequence affect output?
by rjt (Curate) on Jul 16, 2013 at 16:44 UTC
    This is not by accident, it's documented in perlembed: ... I'll presume this usage is official because it document in perldoc.

    ExtUtils::Embed has nothing to suggest this usage is supported. perlembed documents a particular ordering that happens to work without semicolons due to the way those two functions happen to process arguments (which is only obvious upon review of the module code). Do you really think this was the intention of the developers or documentation team?

    I think perl5 porter should make this clearer.

    I agree, the perlembed docs invite trouble. Why don't you open a perlbug?

    I.E: use perl -MExtUtils::Embed -e'ldopts;' -e'ccopts;' instead.

    Or perl -MExtUtils::Embed -e 'ldopts; ccopts' (I'd suggest -eldopts,ccopts, but while the comma works here, it doesn't everywhere.)