#!/bin/perl5 use strict; use warnings; my ( @K_array, @R_array ) = (); my $I = ''; my $out = qq(\n); while (my $l = ) { my ( $code, $value ) = $l =~ /^(\w|\#)\s+(.*)\n$/; $I = $value if $code eq 'I'; if ( $code eq 'K' ){ $out .= "

\n\n" unless @K_array; push @K_array, $value } elsif ( $code eq 'R' ){ $out .= "\n" unless @R_array; push @R_array, "
  • $value
  • \n" } $out .= qq($value\n) if $code eq 'S'; $out .= qq(\n) if $code eq 'F'; $out .= "\n" if $code eq '#' } my $K; if ( $I ){ $K = $K_array[0] # assumes only 1 K with I } else{ $K .= '%' . $_ . ',' for @K_array; chop $K } $out =~ s|

    |

    $K

    |; my $R = join '', @R_array; $out =~ s||\n$R|; $out .= qq(
    \n
    ); if ( $I ){ $out =~ s||\n\n|; $out =~ s||\n\n|; } print "$out\n"; __DATA__ C 1010 K Perl K is K cool F 1234 S Alright R Whatever R More R BlaBla