Any other way of using substitution other than
my $input = do{local $/; <DATA>};
I am reading the file at the beginning and some code like splitting the file into many files.
#!/usr/bin/perl
my $tag;
my $output;
my $fh;
while (<DATA>) {
chomp;
if(/^\.\.(.*):$/) # match line
{
$fh = sub_output($output, $tag, $fh);
$output = "";
$tag = $1;
print $tag;
}
else
{ # not a {TAG} line
next unless($tag);
next if(/^\s*$/);
$output .= ($output) ? " $_" : "<$tag>$_";
}
} # End of While Loop
$fh = sub_output($output, $tag, $fh);
if($fh) {
print $fh "</root>\n";
close($fh);
}
exit(0);
# Subroutine to open the file with the filename as DN
sub sub_output {
my ($output, $tag, $fh) = @_;
if($output) {
if($output =~ m/<DN>(.*)/) {
if($fh) {
print $fh "</root>\n";
close($fh);
}
open($fh, '>', "$1.xml") or die "$1.xml: $!";
print $fh "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
}
$text = "$output</$tag>";
$text =~ s/<DN>.*<\/DN>//;
# Here i should substitute <con> for first <p> tag and
+ <p></con>
print $fh "$text>\n";
}
return($fh);
} # End of sub sroutine
__DATA__
..DN:
1
..id:
000044119
..DD:
Friday, October 30, 2009
..p:
THis is param1
..p:
THis is param2
..p:
THis is param3
..DN:
2
..id:
000044119
..DD:
Friday, October 30, 2009
..p:
THis is param1
..p:
THis is param2
..p:
THis is param3
|