看板 Perl 關於我們 聯絡資訊
※ 引述《david220 (累)》之銘言: : ※ 引述《abliou (Art of Life)》之銘言: : : 這幾行程式碼真的寫的很棒..用遞迴減少很多程式碼... : : 不過還是有一些東西小弟想了很久還是不能參透.... : : 不知道能不能請高手為小弟指點一下....真的感激不盡!! : : 這是我的第一個疑問...就是這邊open的用法...它會對那一個檔打開?? : : 另外這邊為什麼沒有filehandling? : open是開shift的return value : $a才是file handle 非常感謝您的指教!!這邊我就瞭解了.... : : 接這就是這一行....我很不了解這一行的程式運作方式... : : 而且當中用了很多逗號...我很想了解到底逗號的使用時機跟限制到底是如何? : 那一行大約等同 : for (split /\s/, <$a>) { : push(@a, $_); : (@_ && a(@_) || print "@a\n"); : pop @a; : } 在comma這邊我也有想過您所講的意思....所以我用了以下兩種不同的程式碼測試 ======以下為comma.pl===== @a=("a"); push @a,$_ , $a++ , print @a,$/,$a,$/ for (0..3); ======回傳=============== a 1 a001 2 a001111 3 a001111221 4 =====以下為comma2.pl===== @a=("a"); for (0..3){ push @a,$_; $a++; print @a,$/,$a,$/; } ====回傳================= a0 1 a01 2 a012 3 a0123 4 這兩段程式碼我不知道這樣的拆解是不是會有所差異... 不過按照我預期的回傳comma.pl跟comma2.pl應該要一樣... 而對於comma.pl的回傳我卻完全無法理解為何會如此.... : 注意@a是global : : 有試著去實做和查資料..但是都途勞無功...所以在此請教高手們... : : 感謝高手們的指教..因為小弟正在當兵..可能沒有辦法為教導的高手們提出即時的感謝 : : 但小弟有放假一定會來道謝.... : : 先在這邊謝過各位高手了... : 這段code開了(ab102 ac1256 ef698 ed23)這四個檔案 : 檔案裡面的資料用tab隔開 : 雖然我看本來的題目似乎是只有一個檔案,內容為 : ab102\t11,01,65,99,68,78 : ac1256\t01,23,41,65,74,63,26 : ef698\t02,13,56,07,09 : ed23\t32,05,06,23 : 不過,也有可能是我搞錯就是了 ^^" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.123.196.66
david220:push @a,$_ , $a++ , print @a,$/,$a,$/ for (0..3);那行 03/01 14:14
david220:改 push(@a, $_) , $a++, .... 才會一樣 03/01 14:15
david220:本來那樣寫 $a++ , print的return value都會push進@a 03/01 14:15
abliou:原來是這樣!!感謝!!!!! 03/01 18:27
abliou:那是否可以再請教,最後@a值是a001111221,到底是那些值被 03/01 18:32
abliou:push進去了? 03/01 18:33
abliou:我大概清楚了!!感謝d大的指教!! 03/01 18:37