pos SCALAR
pos

傳回變數中最後一個 m//g 搜尋離開的位置偏移量(當未指定變數時會使用 $_)。此偏移量以字元為單位,除非啟用了(不再建議使用的)use bytes pragma,否則偏移量會以位元組為單位。請注意,0 是有效的比對偏移量。 undef 表示搜尋位置已重設(通常是因為比對失敗,但也有可能是因為尚未對純量執行任何比對)。

pos 直接存取正規表示式引擎用來儲存偏移量的位址,因此指定給 pos 會變更該偏移量,也會影響正規表示式中的 \G 零寬度斷言。這兩個效果都會在下次比對中發生,因此您無法在目前的比對中使用 pos 來影響位置,例如在 (?{pos() = 5})s//pos() = 5/e 中。

設定 pos 也會重設「以零長度比對」旗標,詳情請參閱 perlre 中的「重複模式比對零長度子字串」

由於失敗的 m//gc 比對不會重設偏移量,因此 pos 的傳回值在此情況下也不會變更。請參閱 perlreperlop