Re: [QUIZ] Perl 'Easy' Quiz of the Week #2005-1
Ronald J Kimball <[email protected]> Mon, 24 Jan 2005 12:12:16 -0500
| Newsgroups | gmane.comp.lang.perl.qotw.discuss |
|---|---|
| Message-ID | <[email protected]> |
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__