顯示頁面舊版反向連結Fold/unfold all回到頁頂 本頁是唯讀的,您可以看到原始碼,但不能更動它。您如果覺得它不應被鎖上,請詢問管理員。 ====== Perl 的 hash 變數相關實務驗證 ====== 這個問題所造成的 Bug 真的會很難抓.. 所以仔細了解一下 hash 的變數與實際驗證的結果整理如下: * 清除 hash 變數的方式 <code perl> #!/usr/bin/perl for ($i=0; $i<10; $i++) { #undef(%hash_test); #%hash_test={}; #%hash_test=(); $hash_test={}; print $i.'a:['.$hash_test->{'test'}."]\n"; $hash_test->{'test'}=time; sleep(1); print $i.'b:['.$hash_test->{'test'}."]\n"; } </code> 必須要用 undef($hash_test), $hash_test={} 或 $hash_test=() 才可以真正清除掉, 否則內容還是存在. <note warning> **清除 array 的語法剛好相反** * @arr_t=(); 可以正確清除掉 arr_t 的陣列內容 * $arr_t=(); 無法清除掉 arr_t 的陣列內容 </note> * hash 變數並不會因為在 sub 內的 local 宣告就回重新產生一份在 sub 內專屬的變數, 而是整體的變數 <code perl> #!/usr/bin/perl $hash_x->{'test'}='abc'; print("1:[".$hash_x->{'test'}."]\n"); change_hash('xyz'); print("2:[".$hash_x->{'test'}."]\n"); sub change_hash { local($p_value) = @_; local(%hash_x); $hash_x->{'test'}=$p_value; return; } </code> ** 結果如下 ** <file> [apache@rdtest01 develop]$ perl /tmp/t4.pl 1:[abc] 2:[xyz] </file> {{tag>perl hash}} tech/perl_clear_hash.txt 上一次變更: 2008/12/25 10:21由 jonathan