http://www.perlmonks.org?node_id=1019102

osler has asked for the wisdom of the Perl Monks concerning the following question:

I am working with Lingua::StanfordCoreNLP, a module that exports subclasses when used. When I write a script I am able to use Lingua::StanfordCoreNLP and then instantiate objects that are members of the exported subclasses.

Script Code: (straight from the sample code from cpan)
# Note that Lingua::StanfordCoreNLP can't be instantiated. use Lingua::StanfordCoreNLP; # Create a new NLP pipeline (silence messages, make corefs bidirection +al) my $pipeline = new Lingua::StanfordCoreNLP::Pipeline(1, 1); # Process text # (Will output lots of debug info from the Java classes to STDERR.) my $result = $pipeline->process( $text );

When I try to use Lingua::StanfordCoreNLP in a module that I am writing, I get an error message when I try to instantiate an object member of one of the subclasses. The error message tells me that it can't find the subclass.

My Module Code:
package MyModule; use Lingua::StanfordCoreNLP; my $pipeline = new Lingua::StanfordCoreNLP::Pipeline(1, 1); sub process_text { my ($self,$text) = @_; $pipeline->process( $text ); }
Can't locate object method "new" via package "Lingua::StanfordCoreNLP::Pipeline" (perhaps you forgot to load "Lingua::StanfordCoreNLP::Pipeline"?)

I think this is a problem related to the difference between run-time and compile-time, but I can't wrap my head around why this isn't working and what I can do differently.