Re: [問題] 關於字元

看板Perl作者 (gg)時間17年前 (2007/06/18 12:04), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串4/4 (看更多)
※ 引述《wnick (淺龍勿用)》之銘言: : ※ 引述《DarkKiller (System hacked)》之銘言: : : $ perl -MSocket -e 'print inet_ntoa("\x01\x02\x03\x04"), "\n";' : : 1.2.3.4 : : == : : 有專門處理的函數... : 我大概懂了 : 只是現在我要如何把它轉變成v-string呢 : 因為原本UNPACK是用H8產生8c8615c4 可以不用太理會 v-string 的部份, 因為以後的 Perl 會把這個東西丟掉 . 不過,關於它的定義,請找 perldata 裡的 "Version String" 一節 簡單的說,就是寫成這樣的字面值: v1.2.3.4 原本的目的是拿來做版號,直接印出來便可以知道它是在做啥: print v65.66.67; # 印出 "ABC" 也就是說,它其實是在定義字串,並且用 "." 來分隔每個字元,事實上不需要 前面的 v 也可以: print 65.66.67; # ABC Socket 模組裡面,inet_ntoa 的用法就是要你放一個這樣的字串,不用括號: $a = inet_ntoa(140.112.90.72) 但這樣之後的 $a 是 "140.112.90.72", 140.112.90.72 是 4 個 character, "140.112.90.72" 則是 13 個 character。你也可以用這種方法得到同樣的效果: $a = inet_ntoa("\x{8c}pZH"); 所以... 說穿了 v-string 還是一個字串,只是不用寫括號,但中間要用 . 分隔 每個字元,並且每個字元要用它的 ord() 值表示,所以: print 12549.12550.12551.12552; 這樣子就可以印出 ㄅㄆㄇㄈ 當然這個 v-string 並不會落在 IPv4 的範圍裡就是了 Cheers, Kang-min Liu -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.22.54.223

06/19 12:24, , 1F
請問「以後的version」是指 perl 6 嗎? @_@
06/19 12:24, 1F

06/25 02:06, , 2F
指的是 5.8 之後的 Perl (5.9, 5.10, ...)
06/25 02:06, 2F
文章代碼(AID): #16TWHfoh (Perl)
討論串 (同標題文章)
文章代碼(AID): #16TWHfoh (Perl)