$.
is the line number on input; serves the
same function as our explicit state variable
$PRINTED_LINE
.
#!perl -nl sub maybe_print_m { $DONE_M || print "$PREFIX.M"; } /$PREFIX/ or$DONE_M=!maybe_print_m; /\./; $PREFIX=$`; $DONE_M=/M$/ || maybe_print_m if /[M-Z]$/; print; END { $.&&maybe_print_m }