brintos

brintos / linux-shallow public Read only

0
0
Text · 968 B · ba4205e Raw
47 lines · plain
1#!/usr/bin/perl2 3my %include = ();4my %included = ();5 6for my $text (<*.txt>) {7    open I, '<', $text || die "cannot read: $text";8    while (<I>) {9	if (/^include::/) {10	    chomp;11	    s/^include::\s*//;12	    s/\[\]//;13	    $include{$text}{$_} = 1;14	    $included{$_} = 1;15	}16    }17    close I;18}19 20# Do we care about chained includes???21my $changed = 1;22while ($changed) {23    $changed = 0;24    while (my ($text, $included) = each %include) {25	for my $i (keys %$included) {26	    # $text has include::$i; if $i includes $j27	    # $text indirectly includes $j.28	    if (exists $include{$i}) {29		for my $j (keys %{$include{$i}}) {30		    if (!exists $include{$text}{$j}) {31			$include{$text}{$j} = 1;32			$included{$j} = 1;33			$changed = 1;34		    }35		}36	    }37	}38    }39}40 41while (my ($text, $included) = each %include) {42    if (! exists $included{$text} &&43	(my $base = $text) =~ s/\.txt$//) {44	print "$base.html $base.xml : ", join(" ", keys %$included), "\n";45    }46}47