It indicates a lack of &f.

Excellent. That makes sense now; thanks for the concise explanation.

Now, what about the Carp code? The OP code is drawn from 5.14.2, but I have the same issues in 5.12.4, and the Carp code is a bit simpler there:

sub caller_info { my $i = shift(@_) + 1; my %call_info; { package DB; @args = \$i; # A sentinal, which no-one else has the address of @call_info{ qw(pack file line sub has_args wantarray evaltext is_require) } = defined &{"CORE::GLOBAL::caller"} ? &{"CORE::GLOBAL::caller"}($i +) : caller($i); } unless (defined $call_info{pack}) { return (); } my $sub_name = Carp::get_subname(\%call_info); if ($call_info{has_args}) { my @args; if (@DB::args == 1 && ref $DB::args[0] eq ref \$i && $DB::args[0] +== \$i) { @DB::args = (); # Don't let anyone see the address of $i @args = "** Incomplete caller override detected; \@DB::args were + not set **"; } else { @args = map {Carp::format_arg($_)} @DB::args; } if ($MaxArgNums and @args > $MaxArgNums) { # More than we want to +show? $#args = $MaxArgNums; push @args, '...'; } # Push the args onto the subroutine $sub_name .= '(' . join (', ', @args) . ')'; } $call_info{sub_name} = $sub_name; return wantarray() ? %call_info : \%call_info; }

Again, I can almost see what's going on here, but not quite. It looks like the if ($call_info{has_args}) is only there to keep from checking args when there really weren't any, so perhaps it's not as big a piece of the puzzle as I had suspected. The main question is, what exactly is supposed to be triggering that "incomplete override" message?


In reply to Re^2: Trying to understand (caller($i))[4], a.k.a. $hasargs by Oberon
in thread Trying to understand (caller($i))[4], a.k.a. $hasargs by Oberon

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.