作者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
推 ppkliu:因為我單純只是想將常用的code包起來 沒想那麼多 07/10 19:40
→ darenhu:Perl本來的宗旨就是一件事可以有不同的做法,程式能用就好 07/10 22:34