lib/App/read_httpd_conf.pm
changeset 16 67d4ed376726
parent 15 26b84b6da139
parent 14 ee11abdf5324
child 17 1b278fa8b05f
equal deleted inserted replaced
15:26b84b6da139 16:67d4ed376726
    14 	return read_file(@_) ? 0 : 1;
    14 	return read_file(@_) ? 0 : 1;
    15 }
    15 }
    16 
    16 
    17 sub read_file {
    17 sub read_file {
    18     my ($file, $basedir) = @_;
    18     my ($file, $basedir) = @_;
       
    19     $file =~ s{/+}{/}g;
    19     $basedir //= dirname $file;
    20     $basedir //= dirname $file;
    20     open(my $fh, '<', $file)
    21     open(my $fh, '<', $file)
    21       or croak "Can't open $file: $!\n";
    22       or croak "Can't open $file: $!\n";
    22     say "# 1 $file";
    23     say "# 1 $file";
    23     while (<$fh>) {
    24     while (<$fh>) {
    24         if (s{\\$}{}) {
    25         if (s{\\$}{}) {
    25             chomp;
    26             chomp;
    26             $_ .= <$fh>;
    27             $_ .= <$fh>;
    27             redo;
    28             redo;
    28         }
    29         }
    29         if (/^\s*include(?:optional)\s+(?<quote>["'])?(?<file>.*?)\k<quote>?\s*$/i) {
    30         if (/^\s*include\s+(?<quote>["'])?(?<file>.*?)\k<quote>?\s*$/i) {
    30             my $file = $+{file} =~ m{^/} ? $+{file} : "$basedir/$+{file}";
    31             my $include_file = substr($+{file}, 0, 1) eq '/'  ? $+{file} : "$basedir/$+{file}";
    31             say "# $. $file INCLUDE $+{file}";
    32             say "# $. $file INCLUDE $include_file";
    32             read_file($_, $basedir) foreach (glob -d $file ? "$file/*" : $file);
    33             read_file($_, $basedir) foreach (glob -d $include_file ? "$include_file/*" : $include_file);
    33             next;
    34             next;
    34         }
    35         }
    35 
    36 
    36         print;
    37         print;
    37     }
    38     }