[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> wrote:
> Hey Guys
> 
> I am having an odd problem using grep to ensure an array only
> contains distinct entries. 
> 
> I have a list similar to the following in a file (short example of a
> much longer list) 
> 
> support01-FastEthernet1/0
> support01-RH
> jnormandin-p370-1691-SH-Cpu-2
> jnormandin-p370-1691-SH
> 
> These entries may or may not appear multiple times within that list.
> 
> 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)); 

push @pingErrorsName, $element if ( ! grep { $_ eq $element }
@pingErrorsName );

or 

push @pingErrorsName, $element if ( ! grep { /^$element$/ }
@pingErrorsName );

should work.. (untested though).

But this would be inefficient for large arrays.

Use hash instead.

$pingErrorsName{$element} = undef;

Retrieve the elements by 

@elements = (keys %pingErrorsName);

> * 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).   
>
> Now I am using word boudnary anchors (\b) in the grep so I am
> confused as to why this is not working. 
> 
> Does anyone have any ideas as to why this is occuring and how I can
> prevent it? 

HTH...

--Ankur

Why did kamikaze pilots wear helmets anyways?

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to