perl-5.22.1
pos SCALAR
pos

Returns the offset of where the last m//g search left off for the variable in question ($_ is used when the variable is not specified). Note that 0 is a valid match offset. undef indicates that the search position is reset (usually due to match failure, but can also be because no match has yet been run on the scalar).

対象の変数に対して、前回の m//g が終了した場所の オフセットを返します(変数が指定されなかった場合は $_ が使われます)。 0 は有効なマッチオフセットであることに注意してください。 undef は検索位置がリセットされることを意味します (通常はマッチ失敗が 原因ですが、このスカラ値にまだマッチングが行われていないためかもしれません)。

pos directly accesses the location used by the regexp engine to store the offset, so assigning to pos will change that offset, and so will also influence the \G zero-width assertion in regular expressions. Both of these effects take place for the next match, so you can't affect the position with pos during the current match, such as in (?{pos() = 5}) or s//pos() = 5/e.

pos は正規表現エンジンがオフセットを保存するために使う場所を直接 アクセスするので、pos への代入はオフセットを変更し、そのような変更は 正規表現における \G ゼロ幅アサートにも影響を与えます。 これらの効果の両方は次のマッチングのために行われるので、 (?{pos() = 5})s//pos() = 5/e のように現在のマッチング中の pos の位置には影響を与えません。

Setting pos also resets the matched with zero-length flag, described under "Repeated Patterns Matching a Zero-length Substring" in perlre.

pos を設定すると、 "Repeated Patterns Matching a Zero-length Substring" in perlre に 記述されている、長さ 0 でマッチング フラグもリセットされます。

Because a failed m//gc match doesn't reset the offset, the return from pos won't change either in this case. See perlre and perlop.

m//gc マッチに失敗してもオフセットはリセットしないので、 pos からの返り値はどちらの場合も変更されません。 perlreperlop を参照してください。