#!/usr/bin/perl use say; use strict; use warnings; use RTF::Writer; use Data::Dumper; use RTF::TEXT::Converter; die "usage: $0 input output\n" unless @ARGV == 2; my $infile = shift; my $outfile = shift; open my $rtf_data, "<", $infile or die "Could not open the ".$infile.": $!"; my $output_str; my $object = RTF::TEXT::Converter->new( output => \$output_str ); $object->parse_stream( $rtf_data ); close $rtf_data or warn "Could not close ".$infile.": $!"; chomp $output_str; # say $output_str; my @un = split("\n", $output_str); my $rtf = RTF::Writer->new_to_file($outfile); my @sorted = sort { my @fields_a = split ' ' , $a; my @fields_b = split ' ', $b; chomp($a, $b); $fields_a[0] <=> $fields_b[0]; if($fields_a[1] || $fields_b[1] eq 'ERROR'){ $rtf->prolog(); $rtf->print($fields_a[1]); } } @un; print Dumper \@sorted; $rtf->close;