Спасибо за предыдущую помощь всем! У меня есть вопрос относительно RegExp в Perl
Моя проблема ..
Я знаю, что при сопоставлении вы можете написать m // или // или ## (должно включать m или s, если вы используете это). Что вызывает у меня путаницу, так это пример из книги о том, как убежать от своих персонажей. Я полагаю, что большинство людей избегают множества символов, как верный способ работы программы, не пропуская метасимвол, например: \ @ при поиске совпадения @ скажем в адресе электронной почты.
Вот моя проблема, и я знаю, что делает этот скрипт:
$date= "15/12/99"
$date=~ s#(\d+)/(\d+)/(\d+)#$1/$2/$3#; << why are no forward slashes escaped??
print($date);
Тем не менее, последний пример, который я имею, показывает, что он переписан, как (что я тоже понимаю, и они избежали)
$date =~ s/()(\d+)\/(\d+)\/(d+)/$2\/$1\/$3; <<<<which is escaping the forward slashes.
Я знаю, что косые черты или хэши являются предпочтением программиста и их использование. Чего я не понимаю, так это того, почему второй пример избегает слэшей, а первый - нет - я пробовал, и они работают в обоих направлениях. Никаких слэшей с хэшами? Еще больше сбивает с толку то, что, глядя на еще один пример книги, который я также ранее приводил к этому, снова используя хэши, они тоже избегают символа @.
if ($address =~ m#\@#) { print("That's an email address"); }
или что-то подобное
Так чего же вы избегаете от того, что вы не используете хэши или косые черты? Я знаю, что вы должны избегать метасимволов, чтобы соответствовать им, но я в замешательстве.