Ваше регулярное выражение должно быть:
/\/test.*\n/
Причина в том, что вы сопоставляете весь текст, и нет конца для конца строки.Вам нужно будет указать, что вы хотите соответствие следующей новой строке.Это регулярное выражение включает в себя символ новой строки в совпадении.
С помощью регулярных выражений есть разные способы сделать это, так что это зависит от контекста того, что вы пытаетесь выполнить.Вы можете добавить модификатор m
в конце.Это будет обрабатывать строку как несколько строк, поэтому вы можете использовать ^$
с каждой строкой вместо всего текста.Кроме того, использование многострочного модификатора m
не приведет к совпадению, включающему новую строку.
/\/test.*/m
будет достаточно.
Для получения дополнительной информации: https://perldoc.perl.org/perlre.html
Более того, print "$foo";
НЕ будет печатать совпадение, потому что оператор =~
возвращает значение true или false и не переназначает переменную для совпадения.Вам нужно изменить регулярное выражение для сопоставления с образцом и напечатать первое совпадение:
$foo =~ /(\/test.*)/m;
print $1;