続・範囲演算子『..』と『...』の違い?
昨日の続きです。きむら(K) さんに教えて頂き、大分理解が出来た感じです。
その成果を述べてみますね。
内部的には、フリッププロップのような・・・どうのこうのって話しになり、余計難しくなるので・・・略です。
外部的には、範囲演算子を挟んで両端に同じ値を指定した場合、『..』では、標準入力から両端の値と同じ値が来た時に真になり、同じ値以外は偽となる。
『...』では、両端の値と同じ値が来た時に真になり、つぎに同じ値が来た時までは真で、その次に同じ値が来る時までは偽になる。
言葉だと過去形と現在形での微妙な表現で、わかり辛いと思いますので、以下の両者の結果を比較してみてください。
ちなみに、範囲演算子の一般的な解説は、以下を参照願います。(4E0って何って場合は同じく)
『..』のサンプル
#!/usr/bin/perl use strict; use warnings; my $cond; while (<DATA>) { chomp; $cond = /START/ .. /START/; print "$_ \t $cond\n"; } __END__ START aaa bbb START ddd eee START ggg hhh START jjj
実行結果
C:\test>perl hani1.pl START 1E0 aaa bbb START 1E0 ddd eee START 1E0 ggg hhh START 1E0 jjj
『...』のサンプル
#!/usr/bin/perl use strict; use warnings; my $cond; while (<DATA>) { chomp; $cond = /START/ ... /START/; print "$_ \t $cond\n"; } __END__ START aaa bbb START ddd eee START ggg hhh START jjj
実行結果
C:\test>perl hani2.pl START 1 aaa 2 bbb 3 START 4E0 ddd eee START 1 ggg 2 hhh 3 START 4E0 jjj