perl scalar reference小問題

作者: dragonforce3 (瑤)   2018-05-25 15:53:54
請教大家一個關於scalar ref的小問題
my $project = "aaa";
.
.
.
open(FH,<file);
foreach (<FH>){ # 這行為 project : bbb
my @tmp = split(":",$_);
my $token = $tmp[0]; #值為 project
my $value = $tmp[1]; #值為 bbb
# chomp 以及空白字元處理就不打上來了
$$token = $value;
}
預期 $$token這行應該等效下行
$project = $value
但實際上卻不是這樣
也分別印出 $project 與 $$token 的位址
確實不同
請問這是我對於 reference理解錯誤嗎?
謝謝幫忙!
作者: flu (Crazy Rhythm)   2018-05-25 17:04:00
把$project改成以our宣告就可以了$$token那一行使用到的symbolic reference只能用來對package variable起作用以my宣告的變數不會出現在symbol table裡 所以symbolic ref的方式找不到你要的那個變數說到底還是加上 use strict; use warnings; 比較能避開類似這種看似細微但是出錯時又不是能一眼看透的錯誤
作者: cutekid (可愛小孩子)   2018-05-25 18:02:00
推 f 大解釋,長知識了。
作者: dragonforce3 (瑤)   2018-05-26 06:25:00
感謝f大 謝謝 功力又更深一層了

Links booklink

Contact Us: admin [ a t ] ucptt.com