看板 Perl 關於我們 聯絡資訊
※ 引述《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
ppkliu:因為我單純只是想將常用的code包起來 沒想那麼多 07/10 19:40
darenhu:Perl本來的宗旨就是一件事可以有不同的做法,程式能用就好 07/10 22:34