http://www.perlmonks.org?node_id=1187454


in reply to Re^4: global var
in thread global var

I am glad that you ran my code and you see that it works.

The manageusers.pm file should have the "our" declaration of $LoggedON_user_id and this "our" declaration should not appear anywhere else.

I am not sure what your remaining problem is, but I suspect that the solution will be simple once the problem is fully understood.

Again, try to make a very, very simple example of the problem. Forget the web server for the moment. Get your script to work from the command line.

Your "cgi" script doesn't even need to import $LoggedON_user_id as long as it does "use manageusers ();", (which imports nothing), you can still access $manageusers::LoggedON_user_id as long as manageusers.pm has something like our $LoggedON_user_id = "default";

Replies are listed 'Best First'.
Re^6: global var
by tultalk (Monk) on Apr 08, 2017 at 12:21 UTC

    I had tried that first but will try gain.

    In manageuser Removed EXPORT of LoggedON_user_id

    my $username1 = $session->param("user_id"); warn("username1 : '$username1'");

    Error Log manageusers

    Already logged on LoggedOn_user_id : '428' at /home/jalamior/www/httpsdocs/cgi-bin/lib/perl/manageusers.pm line 287. username1: '428' at /home/jalamior/www/httpsdocs/cgi-bin/lib/perl/manageusers.pm line 290.

    and

    $LoggedOn_user_id = $username1; warn("Already logged on LoggedOn_user_id : '$LoggedOn_user_id'");

    And the error log

    Already logged on LoggedOn_user_id : '428' at /home/jalamior/www/httpsdocs/cgi-bin/lib/perl/manageusers.pm line 287

    So the desired value is present in the variable in manageusers

    In calling unit, changed import use manageusers; Commented out qw(LoggedOn_user_id);

    Line 66 in calling unit.

    $userid_1 = $manageusers::LoggedON_user_id;

    warn("userid : '$userid_1' ");

    Error Log line 66

    Sat Apr 8 06:54:25 2017 update_tables-development.cgi: Use of uninitialized value in concatenation (.) or string at update_tables-development.cgi line 66. userid : '' at update_tables-development.cgi line 66.

    Don't know where else to look

      $userid_1 = $manageusers::LoggedON_user_id;

      Is that really line 66 of the cgi ? to work it needs to be

      $userid_1 = $manageusers::LoggedOn_user_id;
      to match the name in manageusers.pm

      Update : Try this simplest of test script alongside update_tables-development.cgi with your existing manageuser module.

      1) Change the #!/usr/bin/perl line to whatever you use for your other cgi scripts. 2) Make sure the permissions are executable by the webserver. 3) Check the line endings are UNIX format (if that's what they need to be)

      #!/usr/bin/perl # moduletest.cgi use strict; use CGI ':standard'; use CGI::Carp 'fatalsToBrowser'; use manageusers qw($LoggedOn_user_id); my $now = scalar localtime; print header,start_html; print qq(<b>$now</b><pre> \$manageusers::LoggedOn_user_id = $manageusers::LoggedOn_user_id \$LoggedOn_user_id = $LoggedOn_user_id </pre>); print end_html;
      poj

        No, Typ when I wrote it on comment. Did no "paste"

        Change the #!/usr/bin/perlline to whatever you use for your other cgi scripts.

        Also incuded already use lib qw(/home/jalamior/www/httpsdocs/cgi-bin/lib/perl);

        2) Make sure the permissions are executable: They are

        Check the line endings are UNIX format (if that's what they need to be) How to check globally??