搜索字符串,找到字符串后的打印行,并进一步格式化perl

时间:2014-09-08 20:39:59

标签: apache perl scalar

我目前正在尝试编写一个脚本来确定服务器上的网站有什么问题。我被困在一个我想要创建的变量上

my documentroot = 

文档根目录出现在apache配置文件/etc/httpd/conf/httpd.conf中,如下所示:

<VirtualHost 184.171.253.172:80>
    ServerName lernperl.com
    ServerAlias www.lernperl.com
    DocumentRoot /home/lernperl/public_html

所以,基本上我决定使用我的域变量$ host作为域并搜索www.$domain.com,但它是下一行对我来说很重要。理想情况下,我希望将/home/lernperl/public_html置于标量中。这似乎很容易,但我一直在寻找答案。我感谢任何帮助!我没有走得太远。

open (configuration_file, "/etc/httpd/conf/httpd.conf");
my @list1 = <configuration_file>;close configuration_file;

1 个答案:

答案 0 :(得分:0)

实现您要做的事情的最佳方法是使用正则表达式来捕获随后的文本&#34; DocumentRoot&#34;。要使用正则表达式的结果设置变量的内容,可以执行以下操作:

if ($line =~ /DocumentRoot (.*?)$/) {
    my $variable = $1;
}

有关perl regular expressions tutorial中perl正则表达式的更多信息。

Apache配置文件可能包含多个DocumentRoot和ServerName,因此您的脚本需要处理这种情况。

祝你好运。