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 > -- To unsubscribe, e-mail: beginners-cgi-unsubscr...@perl.org For additional commands, e-mail: beginners-cgi-h...@perl.org http://learn.perl.org/