in reply to Style Question: Throwaway Objects

One risk you run with the condensed form is that if you get a failure, you make it harder to debug the cause. That is to say, if your code is much more than a throw away, you probably should be doing something like

my $parser = Spreadsheet::ParseExcel->new() or die "Some error text"; my $book = $parser->Parse($filename) or die "Some error text";

Of course it may be that there is no chance that the first step will fail if the preceding use Spreadsheet::ParseExcel; statement succeeded, but that will depend on the module. If this is the case, then I would probably do away with the intermediary and go with

my $book = Spreadsheet::ParseExcel->new()->Parse($filename) or die "Couldn't parse file: $filename";

Unless that module Carps or Croaks under these circumstances.


Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.

Replies are listed 'Best First'.
Re^2: Style Question: Throwaway Objects
by Aristotle (Chancellor) on Dec 09, 2002 at 02:03 UTC
    Of course, if one wants to avoid naming an extra variable, a do BLOCK is the logical choice and doesn't even necessarily reduce readability:
    my $book = do { Spreadsheet::ParseExcel->new() or die "Some error text" } ->Parse($filename) or die "Some error text";

    Makeshifts last the longest.

      If you formatted that as

      my $book = do { Spreadsheet::ParseExcel->new() or die "Some error text" }->Parse($filename) or die "Some error text";

      I might agree with you :^).


      Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
      Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
      Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
      Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.

        TMTOWTFI - this is Perl after all. :-)

        Makeshifts last the longest.

Re: Re: Style Question: Throwaway Objects
by seattlejohn (Deacon) on Dec 09, 2002 at 00:43 UTC
    Ah, good point about testing for an error in the constructor. I've got an or die... clause following the Parse call in the actual code, though I omitted it for simplicity's sake in the example above. But I suppose you're right that if Spreadsheet::ParseExcel->new() returned an invalid object reference for some reason, then that would bungle up the method call and generate an error that might not be very obvious.

            $perlmonks{seattlejohn} = 'John Clyman';