Задача примерно такая: У меня есть файл apache2.conf и я пытаюсь добавить в vitualhost сайта определенную строку, не удаляя другие.
Сейчас разбираюсь с perl, нашел пример с заменой, но он полностью стирает всё что найдено между ServerName и </VirtualHost> , а мне нужно хотя бы дописать, или в идеале: Найти в apache2.conf нужный virtualhost: ServerName $domain и </VirtualHost> , удалить строку начинающуюся с «ScriptAlias /php-bin/» и добавить свою строку «ScriptAlias /php-bin/ /нужный_путь/»
Нашел скриптик на гитхабе, но он удаляет всё что было в virtualhost, а потом добавляет то что нужно. Хотелось бы что бы не удалял.
Сам скрипт:
my $apacheconf = '/etc/apache2/apache2.conf';
open(my $fh, '<:encoding(UTF-8)', $apacheconf);
my $newtext = "\n\tScriptAlias /php-bin/ /var/www/"."$user"."\n";
my $find = "/var/www/$user/data/www/$domain";
my $str = "";
while (my $rowa = <$fh>) {
chomp $rowa;
$str .= "$rowa\n";
}
close $fh;
my $string = $str;
$string =~ s/(ServerName $domain).*?(\<\/VirtualHost\>)/$1$newtext$2/gis;
То есть задача у меня такая: Найти определенный virtualhost, удалить из него строку начинающуюся с ScriptAlias и добавить строчку из $newtext
Подскажите пожалуйста как хотя бы добавить строчку, я только учусь думаю что мне проще будет как-то отдельно от этой конструкции удалять строку, к примеру так:
perl -ni -e 'print unless /ScriptAlias \/php-bin\//' $результат_поиска_между_ServerName_и_virtualhost