Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: CGI::Appl can't find sub

by Anonymous Monk
on Jun 14, 2014 at 01:05 UTC ( [id://1089862]=note: print w/replies, xml ) Need Help??


in reply to Re: CGI::Appl can't find sub
in thread CGI::Appl can't find sub

The problem is that with "strict" enabled, barewords are not allowed as parameters to subroutine calls Instead of reporting an error, the compilation is quietly aborted in the *next* subroutine when a single quote is found

barewords don't have that effect, they're not magic

Replies are listed 'Best First'.
Re^3: CGI::Appl can't find sub
by jimt999 (Initiate) on Jun 14, 2014 at 03:16 UTC

    Okay, then please explain the output from the "perl -MO=Terse AA.pm", which is:

    Bareword "CA_list" not allowed while "strict subs" in use at AA.pm line 309. BEGIN not safe after errors--compilation aborted at AA.pm line 423.

    Note that line 423 is about 15 lines into the *next* subroutine after the one with the bareword parameter. Adding double quotes to the parameter fixed the problem. What made this so hard to root cause is that the problem did not cause the subroutine with the problem to fail. The error message also corresponds with what was observable in the perl debugger - "S AA" failed to show any subroutines after the one that contained line #309.

      Okay, then please explain the output from the "perl -MO=Terse AA.pm", which is ...

      Ask yourself , why am I using barewords?

      If they're not function/package names, or hash keys, then they shouldn't be barewords

      If your barewords are strings, you should quote your strings

      perlintro, Basic debugging checklist and brian's Guide to Solving Any Perl Problem

      If this code you posted in Re: CGI::Appl can't find sub is any indication it means perintro was skipped

      $ perl -c aa.pm syntax error at aa.pm line 4, near "use strict use warning " syntax error at aa.pm line 8, near "}" aa.pm had compilation errors.

      Tracking down syntax errors is very easy, its

      perl -c everyfile.pl perl -c lib/Everyfile.pm ...

      When you're developing , skip B::Terse, don't forget to test every single subroutine in you write in your test suite, so even if eval is hiding any die-ing you'll notice when you typo

      Hi :)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1089862]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (2)
As of 2024-04-26 00:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found