in reply to Re^8: XML::Twig Support for Parameter Entities (@INC)
in thread XML::Twig Support for Parameter Entities

My testing shows that 'do' makes use of @INC.

So it seems that I've found two problems with do's bit:

except that it's more efficient and concise, keeps track of the current filename for error messages, searches the @INC directories, and updates %INC if the file is found.

For me, 'do' does "search @INC" and does "update %INC", despite the docs.

- tye        

  • Comment on Re^9: XML::Twig Support for Parameter Entities (docs)

Replies are listed 'Best First'.
Re^10: XML::Twig Support for Parameter Entities (right)
by shmem (Chancellor) on Aug 13, 2015 at 08:59 UTC
    For me, 'do' does "search @INC" and does "update %INC", despite the docs.

    No, not despite, exactly as the docs state: do searches @INC - I have gotten this bit wrong (you apparently too just now).

    So, the only remaining difference between require and do is that require doesn't load a file present in %INC, while do loads unconditionally. But since require doesn't cache the value it returns at the first call, I have to cache it anyways.

    Which means, that I'll be using do furthermore for all the cases I presented. Thanks!

    update: IMO perl should have an internal table holding the return values from require evals.

    perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'