Re: [問題] 字串轉陣列

看板Perl作者 ( only you )時間12年前 (2013/04/29 23:47), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《flu (Crazy Rhythm)》之銘言: : 在上面的巢狀for內 : 當 ($i, $j, $all_pat2) == ( 5, ??, 'DD0')的時候 : 如果用下面這段: : #$i == 5 ; : #$all_pat2 == 'DD0' ; : # 也要讓%hash已經先用my在迴圈外宣告為lexical scope : $hash{"A".$i} = [ split(//, $all_pat2) ] ; : 那麼 @{ $hash{'A'.$i} } 就是你要的陣列 : $hash{A5}->[0], $hash{A5}->[1], $hash{A5}->[2] 的值就是 'D', 'D', '0' : 詳情可以看看 perlreftut : 或是google一下 hash of array, reference 之類的關鍵字 您好,小弟有研究一下perlreftut 與 reference http://ppt.cc/FkS0 參考了您的解說與以上的網址,程式碼如下 my %hash; my $hash_ref; 開檔讀檔 while (<FILEIN>){ if ($_ =~ /V { All = (\w+); }/){ push (@all_pat, $1); }} for ($i=0; $i<10;$i++){ for ($j=0; $j<3;$j++){ $all_pat2 = substr(@all_pat[$j],$i,1); $hash{"A".$i} = [split (//, $all_pat2)]; }} $hash_ref=\%hash; print "$hash_ref->{A1}[0]"; #預期是0,印出2 print "$hash{A4}->[0]"; #預期是9,印出D 是列印的方式有錯嗎? 如果改成 for ($j=0; $j<3;$j++){ $all_pat2 = substr(@all_pat[$j],$i,1); $hash{"A".$i} = [split (//, $all_pat2)]; print "$hash{A1}->[0]\n";} 會印出00222222222222222, 看起來似乎會覆蓋前面一筆的資料,是我哪裡有誤解或者是漏了嗎? 感謝您~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.253.119.79
文章代碼(AID): #1HVfNq6R (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 3 之 4 篇):
文章代碼(AID): #1HVfNq6R (Perl)