in reply to Beware List::MoreUtils natatime()!

It would seem to be an XS bug - setting the environment var LIST_MOREUTILS_PP=1 makes it go away.
Not for me:
$ LIST_MOREUTILS_PP=1 perl foo String found where operator expected at (eval 1) line 206, near "Carp: +:croak "each_arrayref: argument is not an array reference\n"" (Do you need to predeclare Carp::croak?) String found where operator expected at (eval 1) line 226, near "Carp: +:croak "each_array: unknown argument '$method' passed to iterator."" (Do you need to predeclare Carp::croak?) Use of inherited AUTOLOAD for non-method List::MoreUtils::natatime() i +s deprecated at foo line 14. Can't locate auto/List/MoreUtils/natatime.al in @INC (@INC contains: / +opt/perl/lib/5.10.0/i686-linux-64int-ld /opt/perl/lib/5.10.0 /opt/per +l/lib/site_perl/5.10.0/i686-linux-64int-ld /opt/perl/lib/site_perl/5. +10.0 /opt/perl/lib/site_perl/5.8.8 /opt/perl/lib/site_perl .) at foo +line 14
It runs (with the memory leak) if I don't set LIST_MOREUTILS_PP.

Replies are listed 'Best First'.
Re^2: Beware List::MoreUtils natatime()!
by diotalevi (Canon) on Feb 10, 2009 at 07:13 UTC

    Your bug sounds like your version is depending on an accident of not-quite recent perls. It used to often "just work" to say Carp::croak '...';. That was accidental and whenever you see an exception like this, just make sure to load Carp in advance of loading the thing you're using.

    In your example, do:

    $ LIST_MOREUTILS_PP=1 perl -MCarp foo
      Looking into the source of List::MoreUtils, I find:
      require Carp; Carp::croak "some message";
      That only works if Carp was already loaded. In older versions of Perl, there was a common pragma (vars?) that loaded it, but that no longer is loaded in 5.10.

      Hence the error. And another reason to not use List::MoreUtils.

        This fix is so trivial, it's not a real reason to avoid it.

        ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊