Perl регулярное выражение подстановка массива - PullRequest
0 голосов
/ 25 апреля 2018

Я хотел бы использовать Perl-скрипт A для генерации и замены массива в Perl-скрипте B.

Сценарий B изначально содержит что-то вроде:

my @old_array = (value1, value2, etc);

Скрипт A содержит что-то вроде:

for ( $a = 0; $a < $nr_values; $a++ ) {

    $list .= "$new_values[$a], ";
}
`perl -pi -e 's/^my \@old_array.*/my \@new_array \= \( $list \)\;/g' script_B.pl;`

Однако при запуске сценария Perl A

  • Подстановка происходит для всех объявленных my переменных

  • Массив @ Символ и имя не изменены: только обновленные значения

Посоветуйте, пожалуйста, как правильно заменить массивы с помощью Perl?

1 Ответ

0 голосов
/ 07 мая 2018

Я нашел правильное решение, используя тройную обратную косую черту:

perl -pi -e 's/^my \\\@temps.*/my \\\@temps \= \( NEW \)\;/g' modify.pl;

Это решает и мои проблемы с поиском и заменой регулярных выражений.

Для тех, кто пытается помочь ссодержательные комментарии, спасибо!Для тех, кто настаивал на том, что я не предоставляю достаточно информации, или что моя проблема была вызвана отсутствием кода, я обнаружил, что ваши ответы были крайне непрофессиональными и не были сосредоточены на задаваемом вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...