#!/bin/perl5
use strict;
use warnings;
my $tag = { K => { open => '%',
close => '',
block => 1,
block_open => '
',
block_close => '
'
},
R => { open => '',
close => '',
block => 0
},
T => { open => '',
close => ' | ',
block => 0
}
};
my $block_flag = 0;
my $line_out = '';
my $output = '';
while (my $line_in = ) {
chomp($line_in);
my ( $style, $content ) = $line_in =~ /^(\w)\s+(.*)$/;
$line_out = join( '',
$tag->{ $style }->{ open },
$content,
$tag->{ $style }->{ close } );
if ( $tag->{ $style }->{ block } and ! $block_flag ){
$output = join( '',
$output,
"\n",
$tag->{ $style }->{ block_open },
$line_out );
$block_flag = $style;
}
elsif ( ! $tag->{ $style }->{ block } and $block_flag ){
$output = join( '',
$output,
$tag->{ $block_flag }->{ block_close },
"\n",
$line_out,
"\n" );
$block_flag = '';
}
else{
$output = join( '',
$output,
$line_out );
}
$line_out = '';
}
open OUT, ">", "output.txt" or die;
print OUT $output;
close OUT;
__DATA__
R Whatever
K Perl
K Monks
K Is
K Cool
T Another style
R Whatever
####
Whatever
%Perl%Monks%Is%Cool
Another style |
Whatever