Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Re^3: Error ... at (eval 75) line 7974.

by BrowserUk (Pope)
on Apr 14, 2009 at 11:59 UTC ( #757377=note: print w/replies, xml ) Need Help??

in reply to Re^2: Error ... at (eval 75) line 7974.
in thread Error ... at (eval 75) line 7974.

Have you tried enabling trace? our $::RD_TRACE = 1;

If that output doesn't help you track back to the C/C++ code that's being mis-parsed, then you could try my old standby:

perl -d:Trace 2>trace

You'll want to ensure you have plenty of free diskspace and something else to do for a few hours--sleeping's good. Cos a program that would run for a few seconds normally, can take hours. But generally, especially if you can make the error fatal (maybe Fatal?), then when it stops the last couple of hundred lines of the trace tell you everything you need to know.

If you want to get sophisticated, you can turn the tracing off at the top of your program and then turn it on just before whatever line of your code instigated the code that issues the warning. It can get you there more quickly. Good luck.

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^4: Error ... at (eval 75) line 7974.
by syphilis (Chancellor) on Apr 15, 2009 at 08:28 UTC
    Have you tried enabling trace?

    I just tried the -d:Trace and that did give me the line number in P::RD where the eval is called. It was indeed line 7974 (which comes from Inline/CPP/ of that string that was causing the problem:
    $return .= join '',' ',@{$item{$Inline::CPP::grammar::star}} if @{$ite +m{$Inline::CPP::grammar::star}};
    So I made the excution of that line of code conditional upon $item{$Inline::CPP::grammar::star} being defined, and the problem went away.

    Unfortunately, that's not the whole solution, as the grammar is still broken. From the first inline::CPP test script (during 'make test') I now get:
    _01basic_t_5cd2.c: In function `void XS_main__Soldier_new(PerlInterpre +ter*, CV*) ': _01basic_t_5cd2.c:79: error: no matching function for call to `Soldier +::Soldier( )' _01basic_t_5cd2.xs:16: note: candidates are: Soldier::Soldier(const So +ldier&) _01basic_t_5cd2.xs:30: note: Soldier::Soldier(char*, c +har*, int) dmake: Error code 129, while making '_01basic_t_5cd2.o'
    Given that Inline::CPP is no longer maintained, I see little point in digging further ... though, of course, pointlessness does not necessarily deter me :-)

    I'm just glad that Inline::C hasn't similarly been destroyed by the latest versions of P::RD.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://757377]
LanX ♪..♫ Fiesta, fiesta mexicana ... ♪..♫
[mandarin]: LanX aren't you a bit late to the party?

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (7)
As of 2018-06-18 17:43 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (110 votes). Check out past polls.