Re: Re: Grep uniqueness issue



Thanks.

Just so that I understand:

push @pingErrorsName, $element if !grep $_ eq $element, @pingErrorsName;

Is actually taking each value in @pingErrorsName and validating if it is equal to $element.
>
> From: "Jeff 'japhy' Pinyan" <japhy@xxxxxxxxxxxx>
> Date: 2005/07/29 Fri AM 11:32:15 EDT
> To: jason_normandin@xxxxxxxxxxx
> CC: beginners@xxxxxxxx
> Subject: Re: Grep uniqueness issue
>
> On Jul 29, jason_normandin@xxxxxxxxxxx said:
>
> > I am having an odd problem using grep to ensure an array only contains
> > distinct entries.
>
> You should probably use a hash (along with your array, if you need to keep
> the order they're in) to ensure unique-ness.
>
> > support01-FastEthernet1/0
> > support01-RH
> > jnormandin-p370-1691-SH-Cpu-2
> > jnormandin-p370-1691-SH
> >
> > I am trying to create an ARRAY containing each of these entries only
> > once (a distinct list). I am using a grep statement:
> >
> > push @pingErrorsName, $element if (! grep (/\b$element\b/, @pingErrorsName));
>
> There's NO reason to use a regex here at all. You don't want $element to
> be treated like a regex (since it's just a string). If you were gonna use
> grep(), you should just do
>
> push @pingErrorsName, $element if !grep $_ eq $element, @pingErrorsName;
>
> But I suggest you use a hash:
>
> push @pingErrorsName, $element if !$uniq{$element}++;
>
> Read 'perldoc -q uniq' for more information.
>
> > * Where $element contains one of the above names in the list and
> > @pingErrorsName is the distinct list of elements.
> >
> > What I am finding is that the array will contain all of the correct
> > entries except: jnormandin-p370-1691-SH. It appears as though the grep
> > is matching jnormandin-p370-1691-SH to the jnormandin-p370-1691-SH-Cpu-2
> > string (as it is a substring of the second one).
>
> Well, YES. That's because \b matches word boundaries. Between the 'H'
> and the '-' is a word boundary.
>
> --
> Jeff "japhy" Pinyan % How can we ever be the sold short or
> RPI Acacia Brother #734 % the cheated, we who for every service
> http://japhy.perlmonk.org/ % have long ago been overpaid?
> http://www.perlmonks.org/ % -- Meister Eckhart
>
.



Relevant Pages