作者darenhu (自然人)
看板perl
标题Re: [问题] 请问传array到sub的问题
时间Sat Jul 8 03:03:53 2006
※ 引述《ppkliu (ppkliu)》之铭言:
: 我写了如下的程式,想将一个array传到sub当中
: 可是一直出现这样的error message
: Can't coerce array into hash at XX.pl at line 49
: sub Findfun #find call function in proc
: {
: my $i; #array index
: my $gotthis; #got 'call' in this proc
: my $inproc; #got procedure name
: my ($array_ref,$Fname1) = @_; #pass array reference
: $gotthis=0;
: $inproc=0;
: foreach (@$array_ref)#@CRT2ASM)
: {
: #这样不是等同使用 $array[$i]
: if($array_ref->{$i} =~ /$Fname1.*proc.*near/s) #->{$i}
: {$gotthis++; $inproc++;
: print "In CRT2.ASM \n";
: print "$i $CRT2ASM[$i]\n";
: } #Fname proc near
: elsif(($inproc==1)&&($array_ref->{$i} =~ /.*call/))
: {print "$i $CRT2ASM[$i]\n"; }
: elsif($array_ref->{$i} =~ /$Fname1.*endp/s)
: {$inproc=0;print "$i $CRT2ASM[$i]\n";} #Fname endp
: $i++;
: }
: }
: &Findfun(\@CRT2ASM,$Fname);
$array_ref->{$i} # 是hash refrence的取值方式
$array_ref->[$i] # 是array refrence的取值方式
你传的是array reference,所以应采用後者
不过,如果可以在subroutine里用$CRT2ASM[$i]
那传array reference到subroutine里好像没意义?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.110.61
1F:推 ppkliu:因为我单纯只是想将常用的code包起来 没想那麽多 07/10 19:40
2F:→ darenhu:Perl本来的宗旨就是一件事可以有不同的做法,程式能用就好 07/10 22:34