http://www.perlmonks.org?node_id=996209


in reply to Re^2: Help with vague Carp error message
in thread Help with vague Carp error message

You might have 1.26 installed somewhere, but I believe Perl is finding and using an older version. The longmess_real and shortmess_real subs were purged a few years ago, in the 1.1x series IIRC.

Basically the way they were defined/used was that the (long|short)mess_real functions were defined inside Carp/Heavy.pm, and were called from Carp.pm itself. In recent versions Carp/Heavy.pm is not much more than an empty file, and Carp.pm doesn't call (long|short)mess_real at all.

So what I'm assuming is that Perl is finding an old version of Carp.pm (which calls longmess_real) but a new version of Carp/Heavy.pm (which does not define longmess_real).

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^4: Help with vague Carp error message
by neilwatson (Priest) on Sep 29, 2012 at 00:34 UTC
    Yep, you are right. I change my BEGIN block to use unshift to make my custom libs load first.
    BEGIN { unshift @INC, "/home/neil/perl5/lib/perl5" }

    Neil Watson
    watson-wilson.ca

      use lib '/it/unshifts/for/you';