escape_Q в моем perl не распознает скобки - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть две строки в файле, обе заканчиваются testInst_Wdata_w0_reg / Jreg_ff [0] .SSS.nr

A...testInst_Wdata_w0_reg/Jreg_ff[0].SSS.nr, 

B...testInst_Wdata_w0_reg/Jreg_ff[0].SSS.nr

Я хочу сравнить общую часть. Но есть «[]», похоже, не может соответствовать.

Я проверил другие темы, люди предлагают использовать \ Q, так как [] имеет особое значение в шаблоне

($ref =~ m/\Q$matching_ref_end$/))

$ Match_ref_end == testInst_Wdata_w0_reg / Jreg_ff [0] .SSS.nr

Итак, у меня есть выше, но, кажется, не работает.

Любые подсказки?

1 Ответ

1 голос
/ 08 февраля 2020

Предполагая, что строки действительно заканчиваются содержимым $matching_ref_end, как вы утверждаете,

/\Q$matching_ref_end$/

должно быть

/\Q$matching_ref_end\E$/

, поскольку \Q экранирует $ .

(На самом деле, это должно быть /\Q$matching_ref_end\E\z/, если вы не хотите принимать перевод строки в конце).

Одна из показанных вами строк на самом деле не заканчивается содержимым $matching_ref_end как Вы утверждаете, однако. У каждого есть запятая, с которой вам придется обращаться.

...