Недавно я стал дружелюбно относиться к регулярным выражениям и использовал их для выполнения множества задач очень эффективно. Как и в большинстве perl, TIMTOWTDI омрачило мое мнение. Есть моменты, когда я могу использовать оператор равенства или оператор привязки. Однако существуют ли времена, когда более целесообразно использовать один над другим?Когда использовать оператор равенства по оператору привязки
Во-первых, упрощенный случай
my $name = 'Chris';
if ($name eq 'Chris') { print 'What a great name!'; }
if ($name =~/^Chris$/) { print 'Yip sure is a great name; }
Так что в данном случае это наиболее упрощенная, где с помощью равенства меньше, набрав, однако в этом упрощенном примере есть какие-либо выгоды для одного или другого.
В несколько более сложный пример
здесь оператор связывания меньше типирование. Однако я не уверен в том, что это может быть выгодно другому.
Итак, общее правило, если вы используете целую строку с фиксированным значением для использования оператора равенства, и если вы сопоставляете строку с шаблоном, например, строку из 5 цифр /\d{5}/
, тогда используйте оператор привязки.
Неправильно использовать оператор привязки в приведенных выше примерах. Я ценю, что эти примеры просто составлены и могут не отражать реальной проблемы с жизнью. Однако это были те, о которых я думал, чтобы попытаться объяснить мой вопрос.
Поддержание работоспособности является основной проблемой здесь, ИМО. В этом конкретном случае я бы пошел с опцией «eq» в обоих случаях, поскольку он лучше передает намерение разработчика. Хотя я ценю академическую дискуссию, здесь существует реальная опасность преждевременной оптимизации. @ikegami имеет это место: оптимизируйте только тогда, когда вы являетесь свидетелем проблемы. Однако мудрые люди проводят стресс-тесты относительно рано в развитии. –