0

このPerl: extract rows from 1 to n (Windows)を読んでいます。flip-flop-operator/readline-counter の部分がわかりませんでした。

perl -nE 'say $c if $c=1..3' my_file 

1
2
3E0

誰かがこの出力がどこから来たのかもっと詳しく説明してもらえますか?

4

1 に答える 1

3

perlopを引用するには:

スカラー コンテキストでは、" .." はブール値を返します。演算子はフリップフロップのように双安定であり、sedawk、およびさまざまなエディターの行範囲 (コンマ) 演算子をエミュレートします。各 " .." 演算子は、それを含むサブルーチンへの呼び出し間であっても、独自のブール状態を維持します。左オペランドが false である限り、false です。左のオペランドが true になると、範囲演算子は右のオペランドが true になるまで true のままになり、その後、範囲演算子は再び false になります。次に範囲演算子が評価されるまで false になりません。正しいオペランドをテストし、真になったのと同じ評価で偽になることができます ( awkのように))、それでも true を 1 回返します。sedのように、次の評価まで正しいオペランドをテストしたくない場合は、2 つではなく3 つのドット (" ...") を使用します。その他の点では、" ..." は " " と同じように動作..します。

右側のオペランドは、演算子が "false" 状態にある間は評価されず、左側のオペランドは、演算子が "true" 状態にある間は評価されません。||優先順位はやよりも少し低くなり&&ます。返される値は、false の場合は空の文字列、true の場合はシーケンス番号 (1 から始まる) のいずれかです。シーケンス番号は、検出された範囲ごとにリセットされます。範囲内の最後のシーケンス番号には、文字列 "E0" が追加されています。これは数値には影響しませんが、エンドポイントを除外する場合に検索するものを提供します。シーケンス番号が 1 より大きくなるのを待つことで、開始点を除外できます。

スカラー " " のいずれかのオペランドが定数式である場合、そのオペランドが現在の入力行番号 ( 変数)..と等しい ( ) 場合、そのオペランドは真と見なされます。==$.

(強調追加)

于 2010-11-01T17:44:11.113 に答える