1

ドキュメントを 1 行ずつ読み込もうとしていますが、改行文字ではなく特定の文字のみに関心があります。

私は次のものを持っています:

@chars = split //;

for $char (@chars) {
  if (   ($pos % 16569 == 1719)
      || ($pos % 16569 == 8251)
      || ($pos % 16569 == 10238)) {
    print FILE_OUT "$char\n";
  }

  if ($char == m/[A-Z]/) {
    $pos++;
  }

}

増加しないため、正規表現m/[A-Z]/は一致しません。$posPerl で個々の char に一致させることさえ可能ですか、それともこの操作は文字列に対してのみ許可されていますか? もしそうなら、これを回避する方法はありますか?

4

2 に答える 2

5

あなたはおそらく=~の代わりを意味し==ます。==等しいかどうかの数値比較です。=~演算子の左側で通常のパターン マッチングを呼び出します。

ああ、特に例では、常にuse strictとを使用する必要があります。use warnings

スタックオーバーフローへようこそ。

于 2013-01-11T16:35:18.270 に答える
3

これを行うにはもっと洗練された方法があるかもしれませんが、あなたが直面している問題は、間違った演算子を使用していることです。 ==「数値、等しい」を意味します。この場合、 $char が$_正規表現の一致と一致するかどうかを尋ねています (これはあなたが望むものではありません!)

代わりに、次の正規表現一致演算子を使用する必要があります=~

于 2013-01-11T16:36:27.693 に答える