Using grep on undefined array

Matt Freake matthew.d.freake at gmail.com
Wed Aug 14 08:58:05 BST 2013


On Wed, Aug 14, 2013 at 8:40 AM, Mark Overmeer <mark at overmeer.net> wrote:

> * Andrew Beverley (andy at andybev.com) [130813 23:24]:
> > Could someone please explain to me why the following outputs an empty
> > string rather than "*"?
>
> @fields != @$fields, which is causing the confusion.
>

I don't think the original poster is confusing those two, and when I
applied 'use strict' to the original code (with the sub) it didn't help (no
warnings or errors). The bit I'm stuck on is why does

   my @fields = grep($_ ne 'domain', @$fields);

autovivify $fields but

   my @fields = @$fields;

does not.


    use strict;

    sub get()
    {   my $fields = shift;
        # my @fields = grep($_ ne 'domain', @$fields); # autovivifies
$fields
        # my @fields = @$fields; # does not autovivify fields
   }

   get();


More information about the london.pm mailing list