Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Call subroutine of main namespace from package in Plack

by thanos1983 (Parson)
on Apr 11, 2018 at 14:04 UTC ( [id://1212687]=note: print w/replies, xml ) Need Help??


in reply to Call subroutine of main namespace from package in Plack

Hello Thenothing,

I am not familiar with PSGI/Plack but I read your question Perl - Call subroutine of main namespace from package and I think you are looking for something like that:

main.pl

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Mypackage; sub callingTest { my $object = new Mypackage(); return [ 200, [ "Content-Type" => "text/html" ], [ $object->test() + ] ]; }; print Dumper callingTest(); __END__ $ perl main.pl $VAR1 = [ 200, [ 'Content-Type', 'text/html' ], [ 'from test' ] ];

Mypackage.pm

package Mypackage; sub new { my $class = shift; my $self = {}; bless $self, $class; return $self; } sub test { return "from test"; } 1;

Hope this helps, BR.

Seeking for Perl wisdom...on the process of learning...not there...yet!

Replies are listed 'Best First'.
Re^2: Call subroutine of main namespace from package in Plack
by Thenothing (Sexton) on Apr 11, 2018 at 14:56 UTC
    Hello thanos, I want to do the contrary. Get value from main script and retrieve in module. Thanks.

      That's rather backwards. Instead, create a function in the module, and from main, call that function with the required parameters.

      Hello again Thenothing,

      When you say contrary you mean this?

      main.pl

      #!/usr/bin/perl use strict; use warnings; use Mypackage; my $object = new Mypackage(); $object->setValue(100); print $object->getValue() . "\n"; # retrievable from any script __END__ $ perl main.pl 100

      Mypackage.pm

      package Mypackage; use strict; use warnings; sub new { my $class = shift; my $self = { _value => shift, }; bless $self, $class; return $self; } sub getValue { my( $self ) = @_; return $self->{_value}; } sub setValue { my ( $self, $value ) = @_; $self->{_value} = $value if defined($value); # return $self->{_value}; } 1;

      If not, show an example with words to understand what you mean.

      Update: Maybe this? Initialize the class with a value and then update it?

      #!/usr/bin/perl use strict; use warnings; use Mypackage; my $object = new Mypackage(100); print $object->getValue() . "\n"; $object->setValue(200); print $object->getValue() . "\n"; __END__ $ perl main.pl 100 200

      Hope this helps, BR.

      Seeking for Perl wisdom...on the process of learning...not there...yet!
        I appreciate your participation thanos1983 Thanks.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2024-04-23 16:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found