in reply to [OT]: Re^9: What's the right way to write a method which returns one line at a time from a file?
in thread What's the right way to write a method which returns one line at a time from a file?

Yes, I agree. I especially like that there is only one return statement. In contrast, using multiple return statements violates the principle of DRY.

Related items from Conway's Perl Best Practices, Chapter 6 (Control Structures):

Conway recommends formatting tabular ternaries with the colon at the front, for example:

# When their name is... Address them as... my $salute = $name eq $EMPTY_STR ? 'Customer' : $name =~ m/(.*), \s+ Ph[.]?D \z /xms ? "Dr $1" : $name ;
because, if you squint, it looks like a lookup table, thus converting the notoriously impenetrable ternary syntax into a familiar and easy to understand lookup table.

Update: Fixed typo in Conway's example my $salute statement above (removed extra ?). Thanks AnomalousMonk.

  • Comment on Re: [OT]: Re^9: What's the right way to write a method which returns one line at a time from a file?
  • Select or Download Code

Replies are listed 'Best First'.
Re^2: [OT]: Re^9: What's the right way to write a method which returns one line at a time from a file?
by AnomalousMonk (Archbishop) on Nov 26, 2020 at 10:07 UTC
    # When their name is... Address them as... my $salute = $name eq $EMPTY_STR ? 'Customer' : $name =~ m/(.*), \s+ Ph[.]?D \z /xms ? "Dr $1" : ? $name ;

    One ? too many:

    Win8 Strawberry 5.8.9.5 (32) Thu 11/26/2020 5:03:36 C:\@Work\Perl\monks >perl -Mstrict -Mwarnings -l my $name = 'xyzzy'; my $salute = $name eq 'foo' ? 'Fooble' : $name eq 'bar' ? 'Barfly' : $name ; print $salute; ^Z xyzzy


    Give a man a fish:  <%-{-{-{-<

      Yes, I've corrected the offending node. Thanks.