in reply to Re^2: Call sub in variable module
in thread Call sub in variable module

Once you've done the

eval "require $class";

part, you just need

$class->mysub();

to call it. Here's a working example.

Module './pm_1175392/mymod123.pm':

package pm_1175392::mymod123; sub mysub { return 'In package: ' . __PACKAGE__; } 1;

Script './pm_1175392_variable_name_mod.pl':

#!/usr/bin/env perl -l use strict; use warnings; my $modno = '123'; my $class = "pm_1175392::mymod$modno"; eval "require $class"; print $class->mysub();

Sample run:

$ ./pm_1175392_variable_name_mod.pl In package: pm_1175392::mymod123 $

The require documentation has information on the eval part. See "perlobj: Invoking Class Methods" for information on the calling part.

Regarding the bit now "under the carpet", please don't do that. It's better to <strike> such text so that subsequent posts still make sense (all explained here). And, yes, I am "just across the ditch" :-)

— Ken

Replies are listed 'Best First'.
Re^4: Call sub in variable module
by tel2 (Pilgrim) on Nov 08, 2016 at 00:50 UTC
    I'm with ya now, Ken.
    And it works!
    Thanks for your help.
    And I've reinstated/stuck-out my previously deleted text, as requested.
    tel2