develooper Front page | perl.perl5.porters | Postings from May 2013

Re: [perl #117947] all XS functions are implicitly :lvalue

Thread Previous
Lukas Mai
May 13, 2013 19:17
Re: [perl #117947] all XS functions are implicitly :lvalue
Message ID:
On 13.05.2013 14:12, Leon Timmermans wrote:
> On Mon, May 13, 2013 at 1:28 PM, Rafael Garcia-Suarez <> wrote:
>> maxstr is not a method; if you use List::Util::maxstr() instead, it
>> complains as it should:
>> ~§ perl -wle 'use List::Util qw(maxstr); List::Util::maxstr($_ = "hi")
>> = 42; print'
>> Can't modify non-lvalue subroutine call in scalar assignment at -e
>> line 1, near "42;"
>> Execution of -e aborted due to compilation errors.
>> That said, we actually seem to have a problem with XS functions called
>> as methods.
> Yeah, the keywords there seems to be "compilation errors". For methods
> we have to detect this at runtime…

Yes, this is about calls that can't be resolved (and rejected) at 
compile time. It affects all method calls but also this:

% perl -wle 'use List::Util qw(maxstr); (\&maxstr)->($_ = "hi") = 42; print'

i.e. calls through a reference.

Lukas Mai <>

Thread Previous Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About