Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

Re: How to pass a value from main program back to a module

by ForgotPasswordAgain (Deacon)
on Feb 22, 2008 at 12:50 UTC ( #669551=note: print w/replies, xml ) Need Help??

in reply to How to pass a value from main program back to a module

Welcome to object-oriented programming. Your module represents an object. You could, for example, pass this config file name as an argument and have a config_file attribute. How you do OO programming is a good topic for trolling, but the basic idea is something like:

package Module; sub new { my ($pkg, %args) = @_; my $self = bless {}, $pkg; $self->init(\%args); return $self; } sub init { my ($self, $args) = @_; if (exists $args->{config_file}) { my $file = $args->{config_file}; if (-f $file) { $self->{config_file} = $args->{config_file}; } else { die "config file '$file' not found, blah\n"; } } # other initialization } # this kind of "accessor" thing is so boring and repetitious # that many people have made modules to handle it sub config_file { my ($self, $val) = @_; if (defined $val) { $self->{config_file} = $val; } return $self->{config_file}; } # the rest of the wonderful things your module does sub some_other_method { my ($self, $blah) = @_; .... open (my $fh, $self->{config_file}) || suicide; # you might have a data structure (like a hash) # to store the results of the configuration; # or better, you could look on CPAN to see if # someone already has done a configuration module # (as indeed they have) } 1;

There are probably at least a dozen things I did there that you can nitpick or do differently, but that's the general idea.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://669551]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (2)
As of 2018-05-28 05:49 GMT
Find Nodes?
    Voting Booth?