in reply to Re: Need to share and modify global variables across modules and packages.
in thread Need to share and modify global variables across modules and packages.

Exactly what I am trying to do. Both those scripts run separately and that is where I am getting the issue. Are you saying that, call a perl module to set the variable and use two functions to set the same ?
  • Comment on Re^2: Need to share and modify global variables across modules and packages.

Replies are listed 'Best First'.
Re^3: Need to share and modify global variables across modules and packages.
by Preceptor (Deacon) on Jul 01, 2013 at 20:29 UTC

    Then I'm afraid I have bad news - you cannot do what you're trying to do, the way you're trying to do it. A module is 'static' code - it's imported by your subs when you start them, but it doesn't have any persistent state.

    You may wish to consider reading from a file. At the most basic this goes like (and please note - this is very basic, there's no error or integrity checking):

    { my $state_file = "current_masterid.txt"; my $MASTERLOGFILE; my $MASTERID; sub save_masterid { if ( defined $MASTERID ) { open ( my $output_fh, ">", $state_file ); print $output_fh $masterid; close ( $output_fh ); } } sub load_masterid { if ( -f $state_file ) { open ( my $input_fh, "<", $state_file ); $MASTERID = <$input_fh>; close ( $input_fh ); } else { $MASTERID = "00000000"; $MASTERLOGFILE = "LOGFILE not defined"; &save_masterid() } } sub get_masterid { &load_masterid() unless defined $MASTERID; return $MASTERID; } sub set_masterid { ( $MASTERID ) = @_; &save_masterid(); } }