Hello Monks
I'm doing some preliminary tests on factory design pattern with PERL and I've found the following issue. If I implement my factory like this, I have no problem.
package GreetFactory; use strict; use warnings; use lib './Greet'; sub instantiate { my $class = shift; my $requested_type = shift; my $location = "Greet/$requested_type.pm"; $class = "Greet::$requested_type"; require $location; return $class->new(@_); } 1;
But if I implement my factory like that, then a load error is displayed (Can't locate object method "new" via package "lib::Repeat" (perhaps you forgot to load "lib::Repeat"?) at GreetFactory.pm line 13).
package GreetFactory; use strict; use warnings; use lib './lib'; sub instantiate { my $class = shift; my $requested_type = shift; my $location = "lib/$requested_type.pm"; $class = "lib::$requested_type"; require $location; return $class->new(@_); } 1;
Of course, with the 1st test, Repeat.pm is located into a 'Greet' subdirectory, and I rename it 'lib' before doing the 2nd test. Everything happens as if 'lib::' is badly interpreted because 'lib' may be a PERL reserved word ?
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |