Perl OOP 看不到新方法
Perl OOP cant see new method
开始学习Perl,尝试OOP,创建主程序和包。尝试创建 class 包的对象时,在主文件中收到错误。在包内调用新方法有效。
Main.pl
use strict;
use warnings;
BEGIN { unshift @INC , '.';}
use Stack01Lib;
print "Hello, World!\n";
my @stack = new Stack01Lib();
Stack01Lib.pm
package Stack01Lib;
use strict;
use warnings;
sub new {
my($class) = shift;
my $self = { };
bless $self, $class;
return $self;
}
1;
print "Loaded\n";
编译后
Can't locate object method "new" via package "Stack01Lib" (perhaps you forgot to load "Stack01Lib"?) at D:\Projects\perl\hello\Main.pl line 26.
Loaded
Hello, World!
您没有加载显示的文件,可能是因为这个错误:
BEGIN { unshift @INC , '.';}
@INC
中的相对路径是相对于当前工作目录的。你想要脚本的目录,所以它应该是
use FindBin qw( $RealBin );
BEGIN { unshift @INC, $RealBin; }
更简单:
use FindBin qw( $RealBin );
use lib $RealBin;
您发布的代码没有其他问题。它不会导致您发布的错误。
开始学习Perl,尝试OOP,创建主程序和包。尝试创建 class 包的对象时,在主文件中收到错误。在包内调用新方法有效。
Main.pl
use strict;
use warnings;
BEGIN { unshift @INC , '.';}
use Stack01Lib;
print "Hello, World!\n";
my @stack = new Stack01Lib();
Stack01Lib.pm
package Stack01Lib;
use strict;
use warnings;
sub new {
my($class) = shift;
my $self = { };
bless $self, $class;
return $self;
}
1;
print "Loaded\n";
编译后
Can't locate object method "new" via package "Stack01Lib" (perhaps you forgot to load "Stack01Lib"?) at D:\Projects\perl\hello\Main.pl line 26.
Loaded
Hello, World!
您没有加载显示的文件,可能是因为这个错误:
BEGIN { unshift @INC , '.';}
@INC
中的相对路径是相对于当前工作目录的。你想要脚本的目录,所以它应该是
use FindBin qw( $RealBin );
BEGIN { unshift @INC, $RealBin; }
更简单:
use FindBin qw( $RealBin );
use lib $RealBin;
您发布的代码没有其他问题。它不会导致您发布的错误。