#!/usr/bin/perl # extract code fragments from xml program listings # first argument: source code file to find # second argument: xml files to extract code from # main # decodes xml by translating & < > back to what they should be sub xml_decode ($) { my $input = shift; $input =~ s/\&/&/g; $input =~ s/<//g; return $input; } # main my $output = shift @ARGV; foreach $file (@ARGV) { open FILE, $file or die "Cannot open file $file"; while ($line = ) { if ($line =~ /\/\* example-begin $output \*\//) { print "Extracting $output from $file\n"; open OUTPUT, ">$output"; print OUTPUT xml_decode ($line); my $example = 1; while (($line = ) && $example) { if ($line =~ /\/\* example-end/) { print OUTPUT xml_decode ($line); close OUTPUT; $example = 0; } else { print OUTPUT xml_decode ($line); } } } } }