Perl 板


LINE

※ 引述《AntaresStar ()》之銘言: : 對一個array我們可以用@arr[1..2]這樣的方式取到subarray : 但對一個array ref 用箭頭$arr_ptr->[1..2]這樣會只取到其中一個值 : 看不太出規律 而又不會error : 有人知道是為什麼嗎 : 另外一個問題 : 有人知道4個點的用途嗎 : perl -e 'print 1..2' # 12 : perl -e 'print 1...2' # 12 : perl -e 'print 1....2' # (print nothing) : perl -e 'print 0....2' # 0 : perl -e 'print 1.....2' # syntax error at -e line 1, near "....." : 網路上查到的多半都是2點跟3點的差異 找不到4點的 : -- :



※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 111.248.84.243 : ※ 編輯: AntaresStar 來自: 111.248.84.243 (10/27 21:53) : 推 scwg: ->[ ] 的 index 不是 list context, 而是 scalar context 10/28 06:25 : → scwg: 1..2 的 scalar context 解讀和 list context 不一樣 10/28 06:25 : → scwg: e.g. $arr_ptr->[1,3,5] 相當於 $arr_ptr->[5], 不是 10/28 06:27 : → scwg: @{$arr_ptr}[1, 3, 5] 10/28 06:27 : 推 cutekid:推 scwg 解釋(Y) 10/28 09:28 : → scwg:那再推一個 xd 這個是猜的, 四個點是被拆成 0 ... .2 從 0 到 10/28 09:39 : → scwg: 0.2, 所以是一個 0. 1 ... .2 則是空的 10/28 09:39 : → scwg: 手邊沒有 perl 有編-DDEBUGGING不然應該用 -Dx 看parse tree 10/28 09:40 : 推 cutekid:哇,scwg 太強了,再推一次有關 4 個點的「猜想」 10/28 10:57 : → AntaresStar:剛剛用-10....2試了一下 0.2的猜想應該是對的 10/28 13:11 : → AntaresStar:關於第一個問題 那1..2的scalar context要怎麼解讀呢 10/28 13:13 : → AntaresStar:看來是被當成range operator了 這真是太奇怪了 XD 10/28 13:17 : 推 CindyLinz:是 flip-flop 正反器.. 至於實用情境嘛... (思) 10/28 15:02 .. 和 ... 用在 scalar 時像是「正反器」, 用起來也像是正反器, 對我這不是電子電路出身的人來說, 初看時還真不知道能怎麼用.. :Q 它的說明非常地.. 像零件... 「起初, 如果左邊是 false, 則它是 false; 如果一旦左邊變成 true 了, 則它會先變成 true, 然後開始看右邊.. (如果是『..』的話, 這一次就先仍不管右邊, 如果是『...』的話, 如果右邊現在已是 true, 則下一次會跳回起初一樣看左邊.) 繼續, 就一直觀察右邊, 如果右邊是 false, 則繼續 true 下去看右邊; 如果右邊是 true, 那這一次仍維持 true, 但下一次會變回起初狀態. 」 我覺得用起來一個自然的用法是這樣: while(<>) { if( /begin/ ... /end/ ) { print $_; } } 那麼如果輸入內容如下 a begin b c end e 會印出 begin b c end 而 .. 和 ... 的差別在 begin xyz end oo end 這種, begin 和 end 出現在同一行的時候, ... 的版本會印出 begin xyz end .. 的版本會印出 begin xyz end oo end 因為 .. 在 begin 的那一刻就不會去看右邊的條件, 而 ... 會. btw, .. / ... 決定要看左邊或右邊的「狀態」, 會跨越函數呼叫, 所以可以把這東西放在一個 sub processLine {} 裡面, 然後每一行資料去呼叫它一次也會動~ 然後 .. / ... 還有一個隱藏功能, 如果 .. / ... 的左邊或右邊是個「常數」的話, 它會拿這個常數去跟 $. 作 == 的比較... ($. 是目前正在讀的檔案的行號) 所以可以寫 while(<>){ if( 3 .. 5 ) { print $_; } } 會印出 3~5 行~ --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.121.80.249
1F:推 cutekid:推(Y),長知識 10/28 16:06
2F:→ cutekid:請問「跨越函數呼叫」那邊有例子嗎?不是很瞭解 ^_^ 10/28 16:06
3F:推 abliou:太棒了! 10/29 12:38
4F:推 abliou:這樣太好用了啦!這省去我以前最少40行的程式碼阿! 10/29 14:13
5F:推 NEWORDER:推 10/30 14:50
右邊的 true/false 在說明裡寫反了 :p 不過我猜這麼細節的部分沒有人看 XD ※ 編輯: CindyLinz 來自: 112.121.80.249 (10/31 13:55)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP