in reply to Re: Bug with lists?
in thread Bug with lists?

Thanks a lot!

I guess it makes sense, but I have to say that this hardly seems like DWIM behaviour...

Oh well, can't win em all can you?

UPDATE:

Ive now had a look at the section on the comma operator, but frankly I can't tell which part of the docs suggest that this behaviour is correct.

This seems to suggest, given that inside of an annon array the comma's are in list context, that it should insert both of its arguments (empty agreed, so it should be undef no?) into the list. So I am still confused about this behaviour, and unconvinced that its not a bug.

I welcome further info.

Yves / DeMerphq
--
When to use Prototypes?

Replies are listed 'Best First'.
Re: Re: Re: Bug with lists?
by merlyn (Sage) on Feb 18, 2002 at 13:48 UTC
    empty agreed, so it should be undef no?
    I think this is where you are taking a leap of faith, and leaping in the wrong direction. {grin}

    In fact, Perl hints the contrary in perldoc perldata:

    You may have an optional comma before the closing parenthesis of a list literal, so that you can say: @foo = ( 1, 2, 3, );
    So there, you're not getting 1,2,3,undef. Just 1,2,3. An extra embedded syntax-only comma was formerly illegal (I believe). I'm a bit surprised to see that it's now being nicely ignored, just as the trailing comma had been, but it's not totally inconsistent with the trailing-comma-ignored feature.

    Conclusion: no bug, although not precisely documented to work with embedded comma as well as trailing comma.

    -- Randal L. Schwartz, Perl hacker

      Thanks merlyn, this seems like a credible explanation. Although as I said in the CB it seems like a bad call (contrary to DWIM, as well as the behaviour of about every other language.)

      Nevertheless I would like to post this to perl5porters, if only to get the documentation improved. That would be the correct forum wouldn't it?

      Yves / DeMerphq
      --
      When to use Prototypes?

        This has been posted to p5p in the past. See here. FWIW I was said user, and that was less than 6 months after I started learning Perl.

        IMHO the best possible documentation is to firmly get down Perl's idea of what a list is versus what a scalar is. If you understand what a list is, then it is obvious that ,, shouldn't insert an undef. If you don't, particularly if you are translating some VB code that uses commas as placeholders...