lib/App/read_httpd_conf.pm
changeset 14 ee11abdf5324
parent 13 bbb0dea458c3
child 16 67d4ed376726
equal deleted inserted replaced
13:bbb0dea458c3 14:ee11abdf5324
    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>) {
    25             chomp;
    26             chomp;
    26             $_ .= <$fh>;
    27             $_ .= <$fh>;
    27             redo;
    28             redo;
    28         }
    29         }
    29         if (/^\s*include\s+(?<quote>["'])?(?<file>.*?)\k<quote>?\s*$/i) {
    30         if (/^\s*include\s+(?<quote>["'])?(?<file>.*?)\k<quote>?\s*$/i) {
    30             my $file = substr($+{file}, 0, 1) eq '/'  ? $+{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     }