最近、私は正規表現に親しみやすくなり、正規表現を使用して多くのタスクを非常に効率的に処理しています。ほとんどの perl と同様に、TIMTOWTDI は私の判断を曇らせました。等価演算子または結合演算子を使用できる場合があります。ただし、一方を他方よりも使用する方が適切な場合はありますか?
まずは単純化したケース
my $name = 'Chris';
if ($name eq 'Chris') { print 'What a great name!'; }
if ($name =~/^Chris$/) { print 'Yip sure is a great name; }
したがって、この場合、これは最も単純化されており、等式を使用すると入力が少なくなりますが、この単純化された例では、どちらにもメリットがあります。
もう少し複雑な例では
my $name = 'Christopher';
if ($name eq 'Chris' || $name eq 'Christopher') { print 'What a great name!'; }
if ($name =~ /^Chris(?:topher)?$/) { print 'Yip sure is a great name; }
ここでは、結合演算子の入力が少なくなります。ただし、どちらの利点が他の利点よりも優れているかはわかりません。
文字列全体を固定値と一致させて等値演算子を使用する場合、および文字列をパターン (たとえば 5 桁の文字列) と一致させる場合は、/\d{5}/
バインド演算子を使用する場合の一般的なルールも同様です。
上記の例でバインディング演算子を使用するのは不適切ですか。これらの例は作り話であり、実際の問題を反映していない可能性があることを理解しています。しかし、彼らは私の質問を説明しようとして私が考えたものでした.