Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^2: Can I from within a module access variables from the calling program?

by HJO (Acolyte)
on Oct 25, 2012 at 12:09 UTC ( #1000840=note: print w/ replies, xml ) Need Help??


in reply to Re: Can I from within a module access variables from the calling program?
in thread Can I from within a module access variables from the calling program?

Hi,thank you for answering.

Well, the obvious part is that I was asking help here so I didn't manage to make this working.

Could you please look at the code I gave, when I try to run the script, it says to me that there's an "Use of uninitialized value in concatenation (.) or string at..." in my module... so here is why I'm asking some help on the matter


Comment on Re^2: Can I from within a module access variables from the calling program?
Re^3: Can I from within a module access variables from the calling program?
by choroba (Abbot) on Oct 25, 2012 at 12:20 UTC
    Use of uninitialized value
    Oh, I see. You were probably not following the whole conversation in the ChatterBox. If you are not mentioning the variable in a subroutine in the package, the code is executed before you assign any value to the variable in main::. You have to assign the value in a BEGIN block in order to be accessible from within the top level of the package.
    لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

      Well yes, to be honnest, I just saw those three lines, and when I wanted to learn more it was too late for me to see other answers... I'm don't understand quite well how the ChatterBox works and I was a bit too shy to ask again so I tried a private message, but it wasn't long enought to express my problem so I posted a message after a light search to avoid double posts...

      Thanks a lot, I was afraid that I had to use a method that would refactor my whole code ^^"

      I may have really bad luck, but it's not working either, even with the BEGIN {...} method :(

      BEGIN{ my %month = ( 'Jan' => '01', 'Feb' => '02', 'Mar' => '03', 'Apr' => '04', 'May' => '05', 'Jun' => '06', 'Jul' => '07', 'Aug' => '08', 'Sep' => '09', 'Oct' => '10', 'Nov' => '11', 'Dec' => '12', ); my $localdate = localtime; my ($dname, $mname, $day, $time, $year) = split( " ",$localdate); #my $log_name = "./log/ST03_$year-$month{$mname}-$day\_$time.log"; our $log_name = "./log/ST03_$year-$month{$mname}-$day\_$time.log"; }

      Is something missing ?

        The BEGIN must precede the use.
        لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
Re^3: Can I from within a module access variables from the calling program?
by perl_walker (Novice) on Oct 25, 2012 at 12:32 UTC

    Hi HJO,

    Try this, In your module declare global variable, then export variable

    .... our %glo_var = ('a'=>100,'b'=>200); ... @EXPORT = qw(%glo_var ... members); ... 1;

    In your tool

    use SampleModule::TestMod; print $glo_var{'a'};exit;

    Output=100

      Hi perl_walker

      it appears to me that I wasn't enought specific on my post be cause what I'm trying to do is precisely the opposite, calling a variable FROM the principal script INTO the module

      But thanks anyway :)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1000840]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (10)
As of 2014-12-27 06:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (176 votes), past polls