[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>