// process a directory, insert all files found \EMBED{lang=perl} use strict; sub includeDirectoryFiles { # get and check parameters my ($dir)=@_; die qq([Error] Missing directory option.\n) unless $dir; die qq([Error] Directory "$dir" does not exist.\n) unless -d $dir; # declare variables my ($perlPoint, %headlines)=''; # get all sources of this category opendir(D, $dir) or die(qq([Error] Cannot open directory "$dir".\n)); my @sources=grep(/\.pp$/, readdir(D)); closedir(D); # open all files and extract their first headline foreach my $source (@sources) { # open file open(F, "$dir/$source") or warn(qq([Error] Cannot open file "$dir/$source"\n)), next; # extract headline while () { # find headline next unless /^=+(.+)$/; # and store it push(@{$headlines{$1}}, $source); last; } # close file close(F); } # anything found? if (%headlines) { # process files in sorted order foreach my $headline (sort keys %headlines) { # pass the file(s) to PerlPoint $perlPoint.=qq(\n\n\\INCLUDE{file="$dir/$_" type=pp headlinebase=CURRENT_LEVEL}\n\n) foreach @{$headlines{$headline}}; } } # supply generated PerlPoint $perlPoint; } \END_EMBED