高手!可以出手了!! 关于引用的问题。Can't use an undefined value

高手!可以出手了!! 关于引用的问题。Can't use an undefined value

my $reaction = $ReactionList->get($i);
   
      print %{$reaction},"\n";


这是程序的一部分。 我现在想看看 $reaction 应用的数据。 我用  print %{$reaction} 它说  Can't use an undefined value as a HASH reference at ./experiment1.pl

如果 print $reaction 就没有错 能打出地址来。

请问这是哪里出了问题 ?我该咋办??



第2个问题  

my $ReactionList = $model->getListOfReactions;

for (my $i=0; ;$i++) {
    my $reaction = $ReactionList->get($i);
    last unless $reaction;
    my $id = $reaction->getId;
    print "id= $id\n";


这里调用了一些方法。这个我明白。但是除了$id 其他的应该都是 引用 这个已经通过print 他们 验证了。但是我想看看引用里面的数据(反引用) 用%{ } 却什么都没有? 这是怎么回事。但是print $id 却能有结果打出来。 说明这个是PROGRAM WORK 。 是不是反引用错误了?但是我用别的例子也实验了 %{}是对的亚。能够反引用的。 所以不知道 为什么了。 还请高手 帮忙。 谢谢

执行
print  %{$reaction};



一片白


然后最后一行是
Can't use an undefined value as a HASH reference at ./2other.pl line 33.



现在第一个问题 还可以忍受 但是第2个问题 却真的要了命了


核心问题:
下面块里面  我想试图看看每步指针里放的是什么数?
for (my $i=0; ;$i++) {
    my $reaction = $ReactionList->get($i);
      last unless $reaction;
    my $id = $reaction->getId;
    print "id= $id\n";

我试图看看 但发现里面什么都没有(估计是不知道怎么看) 但是print $id 却有值(也就说是中间没有,最后却有了) 这也太奇怪了。



QUOTE:
如果 print $reaction 就没有错 能打出地址来。

你把打印出来的地址 贴出来看看
$reaction指向一个没有初始化的变量
这个通过提示的语句 就知道  但是如果往下放。就会没有这个报错信息
还有一点 可能对大家的分析有帮助

就是如果出HASH 的地址的话 不是单纯的地址  是这样的
LibSBML::Model=HASH(0x85f036c)
是不是 这样的就不能用 %{}反应用?或者应该换个方法?
我是菜鸟,错了标笑我,你试试chomp($reaction),再%{$reaction}呢
我也不强。谢谢。但不好使
没经验,没代码不知道如何分析。
我记得在Perl里面 {} 只用俩处

1.  $refhash = {1=>'a', 2=>'b'}; # 这里面的 {} 表示一个匿名的hash

2. %hash = (1=>'a', 2=>'b');
    $hash{1} = 'A';  #没用方括号是因为Larry  Wall说hash 比 array NB的多

你这个%{$reaction} 从来没见过,不论这个$reaction 是什么,这么写好像都不对头吧

还有就是print %hash 不能给你任何信息 print %hash 可能是print出来个 7/16 或者 5/8, 这个数好像跟memory有关,只是Perl internal debug用的。