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__
>