作者jakechou (jakechou)
看板Perl
標題[問題] 新手鳥問
時間Sat Apr 9 09:57:09 2011
sorry我是perl新手,這些問題總是讓我用perl parse檔案的時候
花超多時間debug 誇張到用手改搞不好都比較快了 XD
請問chomp為什麼要回傳"砍掉的字元數"? 不知道有沒有實用的例子
因為以新手來說 回傳剩下的字串($_)不是很直觀嗎?
如果我要處理chomp過的結果 我除了用$line = $_ 這樣外
有別的function可以使用嗎
我用hash table
%table = ();
$table{"aaa.bbb"}=0;
沒問題
但是 print $table{"aaa.bbb"} 會出錯 好像要${table{"aaa.bbb"}}才行
這是為什麼阿?
foreach (my $iter) @array {}
我知道這裡出了兩個問題 第一個是 (my $iter)要把括號去掉
但我不解為什麼learning perl裡說 只要不影響解讀的括號都可以加或不加
這裡加了括號會變甚麼意思? 另外 @array的 list context本來不就是他所含的
list本身嗎 為什麼我一定要加 (@array)??
請問$_是global variable嗎
那我用 foreach (@array1) {
foreach (@array2) {
print $_;
}
}
但是我又想print @array1的東西,請問我該怎麼辦? 有甚麼方法可以知道我現在的$_,
是指哪個scope裡的$_嗎
謝謝願意回答的大大!!我覺得這些好像是重要的觀念問題,可是我在網路上找到
的答案都支離破碎的,都快要瘋掉了~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 66.68.104.202
1F:推 scwg: chomp($line = $_) 04/09 10:22
2F:推 scwg: foreach 後面的括號是語法的一部分, foreach(my $iter) 會被 04/09 10:23
3F:→ scwg:認為 my $iter 是要跑遍的 list. 04/09 10:23
4F:→ scwg:foreach 用到 $_ 比較像 local $_; 出了範圍就恢復原值, 不過 04/09 10:25
5F:→ scwg:沒辦法去得外面 scope 的 $_ 04/09 10:25
6F:→ scwg: 取 04/09 10:26
7F:→ jakechou:hash的問題用''好像可以解決??? 04/09 11:02
8F:→ jakechou:謝謝大大 foreach的問題 好像"串列問題"討論串有 04/09 11:04
9F:→ jakechou:可是我原來看不懂@@ 04/09 11:04
10F:推 scwg:hash 的問題我無法重現, 看你要不要貼完整程式碼? 04/10 15:16