Home  |  Linux  | Mysql  | PHP  | XML
From:Matt Whipple Date:Sun Nov 29 12:26:47 2009
Subject:Re: problems with 'require'
Paweł Prędki wrote:
> <file mydbtest.pm>
> package dbredwings;
For organization reasons, you should probably make the package name
match the file name
>
> my $platform = "mysql";
> my $database = "dbplayers";
> my $host = "localhost";
> my $tablename = "players";
> my $user = "player";
> my $pw = "pass";
>
> sub printout {
> print shift;
> }
>
> sub get_platform {
> print $platform;
> }
> 1;
> </file mydbtest.pm>
>
> <file properscript.cgi>
> require 'mydbtest.pm';
> print "Content-type: text/html\n\n";
> &mydbtest::printout('hey hey'); # (1)
A package is a logical grouping within code, and it is through packages
which you would specify functions. Once a file is loaded (here through
require) into memory, the original filename becomes somewhat
inconsequential. These functions should therefore be
dbredwings::printout, etc. (here also dropping the & which is considered
somewhat deprecated for simple function calling). This is the reason
for the previous comment about package naming.

I'd suggest reading the perlmod perldoc section a bit more, or cut out
packaging all together if you're not taking advantage of it and treat
the code as one big scary scope.
> &mydbtest::get_platform; # (2)
> print $mydbtest::platform; # (3)
> </file properscript.cgi>
>
> (1) works without any problems. I get the proper output in my browser
> window.
Dumb luck... use strict; use warnings; ?
> (2) doesn't work at all. I get an error as follows:
> Undefined subroutine &mydbtest::get_platform called at
> E:/webdev/perl/properscript.cgi line 42.
> (3) prints an empty string
>
> Also, I get an error message saying that the .pm file can't be found
> when I place it in the same directory as the .cgi files. I have to
> move it to a directory in the @INC array when I run it through the
> server. However, when I run it locally, from the command line,
> everything works just fine. This makes me think that there is
> something in the Apache config that I have to do in order for all this
> to work but I don't know what that is.
The require statement access the file directly (outside the Web server),
so it wouldn't be Apache's configuration. It could be a permissions
problem however.

>
> I'm running ActivePerl 5.10.1 with Apache2.2 with mod_perl.
> Alias /perl "E:\webdev\perl"
> <Location /perl>
> SetHandler perl-script
> PerlResponseHandler ModPerl::Registry
> Options +ExecCGI
> PerlOptions +ParseHeaders
> </Location>
> ScriptAlias /cgi-bin/ "E:/webdev/perl/cgi-bin/"
>
> Cheers,
> palo
>

Navigate in group perl.beginners.cgi at sever nntp.perl.org
Previous Next


Your recent visits
Re: cgi and perl database interaction
Re: Saving param after new recall of a cgi script
Re: Need help to resove..... ExtUtils-Makemaker comilationS
Re: cgi and perl database interaction



  
© No Copyright
You are free to use Anything, but please consult your advocate before doing so as this website
also list content from other sources which may be copyrighted.
Site Maintained by Zareef Ahmed
Powered By PHP Consultants