Re: [QUIZ] Perl 'Easy' Quiz of the Week #2005-1

"Brad Greenlee" <[email protected]> Mon, 24 Jan 2005 12:26:24 -0500 (EST)
Newsgroups gmane.comp.lang.perl.qotw.discuss
Message-ID <[email protected]>
The problem stated that the output should be sorted. That wouldn't be the
case with this solution.

-b

Ronald J Kimball said:
> My solution is very similar to Roger's.
>
>
> #!/usr/local/bin/perl -w
>
> if (@ARGV > 2) {
>   die "usage: $0 [<input file> [<output file>]]\n";
> }
>
> if (@ARGV == 2) {
>   my $out = pop @ARGV;
>   open STDOUT, ">$out"
>     or die "Cannot open $out for writing.\n";
> }
>
> my $last_prefix = '';
> my $printed_m = 1;
>
> while (<>) {
>   chomp;
>   my($prefix, $suffix) = split /\./;
>   if ($prefix ne $last_prefix) {
>     if (not $printed_m) {
>       print "$last_prefix.M\n";
>     }
>     $last_prefix = $prefix;
>     $printed_m = 0;
>   }
>   if ($suffix eq 'M') {
>     $printed_m = 1;
>   }
>   if ($suffix gt 'M' and not $printed_m) {
>     print "$last_prefix.M\n";
>     $printed_m = 1;
>   }
>   print "$_\n";
> }
>
> if (not $printed_m) {
>   print "$last_prefix.M\n";
> }
>
> __END__
>