in reply to problem with strict in perl 5.6 and asp

I experience the following problem when using strict with perl 5.6 and asp
Right, so are you using PerlScript or Apache::ASP?

it complains about built in windows objects like $request and $session variables not being declared in my existing code, I know they exist because they are objects in iis and I can read their values without a problem
Ok, you're using PerlScript. How does it complain?; tell us the exact errors you're getting. How did you verify those objects exist? Because you tested with another language? What aren't you telling us about your application setup?

I tried using the asp module but it still complains has anyone encountered this problem before?
I'm not sure about PerlScript, but with Apache::ASP you need to use the capitalised object names (eg: $Request, $Response, $Application, etc). Perl is a case-sensitive language (unlike VBScript).

I really need strict as I am a beginner
Absolutely... unless you've got a really good reason to turn off the 'strict' and 'warnings' pragams, always use them. And if you already know a reason, it's wrong ;)

-David

  • Comment on Re: problem with strict in perl 5.6 and asp

Replies are listed 'Best First'.
Re^2: problem with strict in perl 5.6 and asp
by grashoper (Monk) on Nov 04, 2007 at 23:06 UTC
    David using perlscript activestate 5.6 on one box and 5.8 on my test box, I pasted my errors. Tried data dumper but I am not sure I did it correctly. I just put use data::dumper; in my file, I tried the object tag too like their example in the readme neither seemed to change anything.
    Global symbol "$Request" requires explicit package name at (eval 2) li +ne 35. Global symbol "$Session" requires explicit package name at (ev +al 2) line 37. Global symbol "$Session" requires explicit package nam +e at (eval 2) line 51. Global symbol "$Session" requires explicit pac +kage name at (eval 2) line 53. Global symbol "$Response" requires exp +licit package name at (eval 2) line 54. Global symbol "$Session" requ +ires explicit package name at (eval 2) line 54. Global symbol "$Sessi +on" requires explicit package name at (eval 2) line 56. Global symbol + "$Request" requires explicit package name at (eval 2) line 56. Globa +l symbol "$Session" requires explicit package name at (eval 2) line 5 +8. Global symbol "$Session" requires explicit package name at (eval 2 +) line 59. Global symbol "$Session" requires explicit package name at + (eval 2) line 60. Global symbol "$Session" requires explicit package + name at (eval 2) line 62. Global symbol "$Session" requires explicit + package name at (eval 2) line 62. Global symbol "$Session" requires +explicit package name at (eval 2) line 62. Global symbol "$Request" r +equires explicit package name at (eval 2) line 64. Global symbol "$Re +quest" requires explicit package name at (eval 2) line 64. Global sym +bol "$Session" requires explicit package name at (eval 2) line 68. Gl +obal symbol "$Session" requires explicit package name at (eval 2) lin +e 68. Global symbol "$Session" requires explicit package name at (eva +l 2) line 68. (in cleanup) BEGIN not safe after errors--compilation a +borted
    on my 5.6.1 box I get the same.
    PerlScript Error error '80004005' Global symbol "$Request" requires explicit package name at (eval 2) li +ne 34. Global symbol "$Session" requires explicit package name at (ev +al 2) line 36. Global symbol "$Session" requires explicit package nam +e at (eval 2) line 50. Global symbol "$Session" requires explicit pac +kage name at (eval 2) line 52. Global symbol "$Response" requires exp +licit package name at (eval 2) line 53. Global symbol "$Session" requ +ires explicit package name at (eval 2) line 53. Global symbol "$Sessi +on" requires explicit package name at (eval 2) line 55. Global symbol + "$Request" requires explicit package name at (eval 2) line 55. Globa +l symbol "$Session" requires explicit package name at (eval 2) line 5 +7. Global symbol "$Session" requires explicit package name at (eval 2 +) line 58. Global symbol "$Session" requires explicit package name at + (eval 2) line 59. Global symbol "$Session" requires explicit package + name at (eval 2) line 61. Global symbol "$Session" requires explicit + package name at (eval 2) line 61. Global symbol "$Session" requires +explicit package name at (eval 2) line 61. Global symbol "$Request" r +equires explicit package name at (eval 2) line 63. Global symbol "$Re +quest" requires explicit package name at (eval 2) line 63. Global sym +bol "$Session" requires explicit package name at (eval 2) line 67. Gl +obal symbol "$Session" requires explicit package name at (eval 2) lin +e 67. Global symbol "$Session" requires explicit package name at (eva +l 2) line 67. (in cleanup) BEGIN not safe after errors--compilation a +borted /base/base.asp, line 29
    David how seriously bad is it to use no strict "vars"; my existing code makes heavy use of built in variables like $Response, $Session, and $Request. If its really bad practice or not recommended obviously I don't want to do it that way. Thanks.. Monty

      Can't you just declare the (not quite) "built-in" variables with our?

      use strict; # with impunity our( $Response, $Session, $Request );

      (our should be usable with 5.6 and later; otherwise the vars pragma could be an alternative.)

      print "Just another Perl ${\(trickster and hacker)},"
      The Sidhekin proves Sidhe did it!

      A reply falls below the community's threshold of quality. You may see it by logging in.