Re: [問題] 請問傳array到sub的問題

看板Perl作者 (自然人)時間18年前 (2006/07/08 02:58), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

07/10 19:40, , 1F
因為我單純只是想將常用的code包起來 沒想那麼多
07/10 19:40, 1F

07/10 22:34, , 2F
Perl本來的宗旨就是一件事可以有不同的做法,程式能用就好
07/10 22:34, 2F
文章代碼(AID): #14hgxPz- (Perl)
文章代碼(AID): #14hgxPz- (Perl)