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.