Re: [問題] 字串轉陣列

作者: hws110 ( only you )   2013-04-29 23:46:58
※ 引述《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,
看起來似乎會覆蓋前面一筆的資料,是我哪裡有誤解或者是漏了嗎?
感謝您~

Links booklink

Contact Us: admin [ a t ] ucptt.com