为什么我们不能在perl中通过object with::访问该方法

为什么我们不能在perl中通过object with::访问该方法,perl,class,object,Perl,Class,Object,我编写了Perl模块,因为我使用了类和对象。 因此,我为类创建对象并访问其方法。 例如: { package sample; sub Bless { my $Class = shift; my $Name = shift; bless \$Name, $Class; } } { package test; our @ISA = qw(sample); sub Print {

我编写了
Perl模块
,因为我使用了
类和对象
。 因此,我为类创建对象并访问其方法。 例如:

{
    package sample;
    sub Bless 
    {
        my $Class = shift;
        my $Name = shift;
        bless \$Name, $Class;
    }
}
{
package test;
        our @ISA = qw(sample);
    sub Print 
    {
        my $Name = shift;
            print "Hi, I'm $$Name & This is for testing\n";
    }
}

my $My_Obj = test->Bless('Ganapathy');
$My_Obj->Print;
对于上述语句,程序已正常运行。 当我执行它时,它会给出这样的输出

Hi, I'm Ganapathy & This is for testing
 $My_Obj::Print;
但是如果我像这样使用带有
的对象访问该方法

Hi, I'm Ganapathy & This is for testing
 $My_Obj::Print;
它没有工作,它抛出如下错误

Useless use of a variable in void context at /home/ganapathy/trainee_2015/perl/inter_perl/chap_13/Object_Doubt.pl line 46.
Name "My_Obj::Print" used only once: possible typo at /home/ganapathy/trainee_2015/perl/inter_perl/chap_13/Object_Doubt.pl line 46.
为什么我不能这样访问,请任何人帮助我。
谢谢。

$My_Obj::Print
中,您要求从包
My_Obj
中获取标量变量
Print

你没有给它赋值或使用它的值,所以基本上你只是提到了一个标量变量的名称,你得到了这个消息

在void上下文中无用地使用变量


你想做什么
$My_Obj
显然是一个对象,您已经成功地使用
$My_Obj->Print
调用了它的
Print
方法。为什么要以不同的方式执行此操作?

$My_Obj::Print
中,您要求从包
My_Obj
中获取标量变量
Print

你没有给它赋值或使用它的值,所以基本上你只是提到了一个标量变量的名称,你得到了这个消息

在void上下文中无用地使用变量

你想做什么
$My_Obj
显然是一个对象,您已经成功地使用
$My_Obj->Print
调用了它的
Print
方法。你为什么想用另一种方式做这件事?

@ganathy:它正在起作用<代码>->和
是非常不同的东西,不能互换。@Ganapathy:它正在工作<代码>->和
是非常不同的东西,不能互换。