#!/usr/bin/env perl -l use strict; use warnings; use Inline::Files; my %doc_fh_for = (File0 => \*FILE0, File1 => \*FILE1, File2 => \*FILE2); my $out_fh = \*STDOUT; my $key_file = 'File0'; my @feature_files = qw{File1 File2}; print $out_fh ''; write_xml_content($key_file, $doc_fh_for{$key_file}, $out_fh, ' ' x 4); print $out_fh ' '; for (@feature_files) { write_xml_content($_, $doc_fh_for{$_}, $out_fh, ' ' x 8); } print $out_fh ' '; sub write_xml_content { my ($file_id, $in_fh, $out_fh, $indent) = @_; while (<$in_fh>) { chomp; if (/^<\/?doc>$/) { s/doc/$file_id/; } else { if (/^$/) { my $id = $1; s/$id/$file_id-$id/; } $_ = ' ' x 4 . $_; } print $out_fh $indent, $_; } }