Как избежать 'внутри' в Perl?

Обходной путь
Найдите конфликтующий порт и отключите его.
enter image description here
Это можно сделать с помощью HDAJackRetask -, выбрать правильную звуковую карту/кодек (, например. Realtek ALC892 ), найдите конфликтующий порт/контакт (, например. 0x1b )и переопределите его на «Не подключено». Затем нажмите «Применить сейчас».

Если появляется сообщение об ошибке «Устройство или ресурс занят», вам необходимо временно полностью отключить pulseaudio. В зависимости от обстоятельств это сработает:

  1. Попробуйте просто убить и перезапустить -pulseaudio --kill, а затем pulseaudio --start
  2. Если PulseAudio автоматически возрождается, скажите ему, чтобы он больше не появлялся автоматически
  3. Если это не сработает, вам может потребоваться отключить службу systemd на короткое время (и начать заново, заменив stop на start)

После этого вы можете нажать «Установить переопределение загрузки», чтобы исправление применялось и при следующем перезапуске. Делайте это только тогда, когда вы уверены, что это работает, конечно.

2
29.10.2020, 01:10
3 ответа

Вы можете использовать, например,. \x27в строке Perl (код символа для 'в шестнадцатеричном формате):

$ perl -e 'print "foo\x27bar"' -l
foo'bar

или обрабатывать кавычки в оболочке, чтобы дать Perl сырой':

$ perl -e 'print "foo'\''bar"' -l
foo'bar

(Первый 'завершает строку в кавычках, \'вставляет кавычки, третий 'начинает новую строку в кавычках.)

10
18.03.2021, 22:54

Вы можете изменить каждый 'на '\''. Но это скоро станет некрасиво.

Лучше использовать -документ для вашего скрипта:

perl -pi - <<'EOT' file.txt
/DB_CHARSET/ and $_.="define('SOMETHING'/, true);\n"
EOT

Обратите внимание на кавычки вокруг EOT. Если терминатор документа здесь -не находится в (одинарных или двойных )кавычках,$-начальные переменные, арифметические подстановки, обратные кавычки и т. д. будут расширены внутри документа здесь -. Это немного отличается от здесь -документов на Perl, где только одинарные кавычки предотвратят раскрытие переменных.

5
18.03.2021, 22:54

Один из способов — использовать -sдля включения рудиментарной обработки переключателей в командной строке perl и, таким образом, определить там одинарную кавычку:

$ perl -spi -e '$_ .= qq/define(${q}SOMETHING$q, true);/' -- -q=\'   file 
2
18.03.2021, 22:54

Теги

Похожие вопросы