So here is a real stumper.
I am maintaining a perl code base, and I appear to have a case of the creeping 1s.
Somewhere, there is a piece of code that breaks the Exporter. Once that code has loaded, I encounter Exporter failings like this:

Can't export symbol: 1varnameA

where $varnameA is a key in the @EXPORT array. An example array is:

@EXPORT = qw($varnameA %varnameB &varnameC);
I'm using 5.6.0 or 5.6.1 depending on the machine, and the complaint comes from Exporter::Heavy line 174:
foreach $sym (@imports) { # shortcut for the common case of no type character (*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next) unless $sym =~ s/^(\W)//; $type = $1; *{"${callpkg}::$sym"} = $type eq '&' ? \&{"${pkg}::$sym"} : $type eq '$' ? \${"${pkg}::$sym"} : $type eq '@' ? \@{"${pkg}::$sym"} : $type eq '%' ? \%{"${pkg}::$sym"} : $type eq '*' ? *{"${pkg}::$sym"} : do { require Carp; Carp::croak("Can't export symbol: $type +$sym") }; }
This became so irritating on one machine that a fellow coder of mine rewrote the code to not use $1 because that magic variable would, in fact, mysteriously have a value of 1. We would even print $sym so we could see what names it was iterating through - and it was correct. The $sym string would be "$varnameA". The order of the @EXPORT array did not matter. Naturally, if you didn't prefix an identifier with a type (a sub) then it would work fine.

I should make it clear that although we patched our Exporter::Heavy on one machine, that did not solve all of our problems..there were still a few creeping 1s, but at least we could get our code to run. I've been searching through our code trying to find what is breaking it, but there is a lot of code there...
Any ideas? Anyone ever seen this behavior before?


In reply to Exporter failing - the case of the creeping 1s by jargon

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.