看板 Perl 關於我們 聯絡資訊
※ 引述《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
JonathanWang:請問「以後的version」是指 perl 6 嗎? @_@ 06/19 12:24
gugod:指的是 5.8 之後的 Perl (5.9, 5.10, ...) 06/25 02:06