无法在 unblessed 参考上调用方法“capture2”

Posted

技术标签:

【中文标题】无法在 unblessed 参考上调用方法“capture2”【英文标题】:Can't call method "capture2" on unblessed reference 【发布时间】:2017-11-09 22:49:36 【问题描述】:
if($var ==1)
    function($host);
#OTHER PROCESSING   
#***
#****
# ****  
$hostForSsh =$host;
my $whatever ="xyz"
my $something= $ssh->capture2(qq(/user/somePlace $whatever) );#--line A

当传递的 $var 的值为 1 时,上面的函数运行完美,但给出 无法在 unblessed 引用上调用方法“capture2”-->如果 $var =0,则 A 行出错。

【问题讨论】:

这里没有足够的细节来回答。我们需要知道$ssh 来自哪里。我的猜测是它没有被正确实例化。 ssh 对象作为 $ssh 传递给函数。在引入 $var =1 循环之前,它工作得很好。所以,如果正在输入循环,它工作正常,否则它会给出错误 如果没有剩下的代码仍然无法回答。 错误是说您将$ssh 视为一个对象,它实际上只是一个普通的(“unblessed”)对象。尝试打印ref $ssh,你会发现它不是一个对象。正如@Sobrique 所说,您需要追踪$ssh 的来源以及它是如何进入该状态的。 非常感谢您的详细描述。由于您提供的@DaveCross 和@Sobrique 答案的方向,能够识别实际错误!干杯!! 【参考方案1】:

解决了!问题仅在 $ssh 中!实际上,我忘记在特定函数中传递 $ssh 对象,我没有注意到这一点,因为传递给函数的参数很多。

【讨论】:

就目前而言,这不是一个非常有用的答案。如果您能花时间更详细地写出问题所在,那就太好了。 请记住,尽管感觉可能不是这样,但 Stack Overflow 页面的主要目的是帮助数百名遇到类似问题的人遇到您的问题。请通过编写一个可以帮助这些人的解决方案来表达您对所获得帮助的感激之情。 我的错误@DaveCross 实际上,我忘记在特定函数中传递 $ssh 对象并且 id id 没有注意到这一点,因为许多参数被传递给函数。所以,老实说,我认为指定这样一个愚蠢的解决方案会非常愚蠢。将立即编辑.. 我的错误@Borodin 实际上,我忘记在特定函数中传递 $ssh 对象并且 id id 没有注意到这一点,因为许多参数被传递给函数。所以,老实说,我认为指定这样一个愚蠢的解决方案会非常愚蠢。将立即编辑..

以上是关于无法在 unblessed 参考上调用方法“capture2”的主要内容,如果未能解决你的问题,请参考以下文章

何时在服务参考上使用 WCF ChannelFactory [重复]

联接表上的条件比参考上的条件快

在java语言里如何在子类中调用父类的有参构造函数

记lombok@Data和@Builder一起用无法添加无参构造方法的坑

java中含参函数怎么调用

Java中如何在无参构造方法中调用有参构造方法,希望最好有个例子,谢谢