0
BaseClass.pm

package Test::Base::BaseClass;

sub new {

    return bless {hello=>@_[0],person=>@_[1]} , __PACKAGE__;    
}

sub hello {
    print "hello";
}

sub person {
    my $self = shift;
    return $self->{person};
}

1;

Sub.pm
package Test::Base::BaseClass;


sub sub_ {

    my $self= shift;
    print __PACKAGE__;

}

1;

example.pl

use lib 'C:/Users/pavan.t/workspace/Simple';
use Test::Base::BaseClass;
$sub =  Test::Base::BaseClass->new('pavan','pavan');

print $sub->person;
print $sub->sub_

1 つの BaseClass パッケージと、同じパッケージに属する別のモジュール Sub.pm があります。

サンプル プログラムでは、メソッドを呼び出すとsub_、次のエラーが出力されます。

C:/Users/pavan.t/workspace/Simple/ExampleOnBase.pl 行 12 で、パッケージ「Test::Base::BaseClass」を介してオブジェクト メソッド「sub_」を見つけることができません。

4

1 に答える 1

1

package を使用すると、perl はパスのどこかにFoo::Bar::Bazあるファイルを検索します。あなたのスクリプトは使用するので、. 定義はありません。foo/bar/baz.pmINCTest::Base::BaseClassBaseClass.pmsub sub_

use Subそこに定義されているパッケージに関係なく、を追加できるはずです。

ただし、パッケージとファイル名は似ている必要があります (似ている必要はありませんが、似ている方が良いです!)。

于 2013-06-20T09:07:11.357 に答える