Hi Noah,
On Tuesday 14 September 2010 17:23:09 Noah wrote:
> Hi there,
>
> I am trying to figure out how to use grep in a particular situation.
> The line is:
>
> next unless grep ($fromdevice, @sitenamekeys);
>
>
> but I am not quite matching properly.
>
> @sitenamekeys = /ABC DEF GHI/;
>
> and $fromdevice could be something like "device1.abc" or "device2.def"
> basically I am trying to get the grep to identify if the current
> $fromdevice has anything that matching any of the elements in @sitenamekeys
>
> So "device1.abc" or "device2.def" would be a match and therefore would
> continue without next but something like "device1.xyz" would not match
> and therefore next would be executed.
>
> Any help is appreciated.
>
grep accepts a block as the first argument, so it should read:
[code]
next unless grep {$_ eq $fromdevice} @sitenamekeys);
[/code]
In this case, you should prefer to one of:
1. Use List::MoreUtils::any instead of grep.
2. Use the perl-5.10 and above smart-match operator - ~~, which can see if an
element exists in a list.
3. Use a hash for faster lookups.
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
First stop for Perl beginners - http://perl-begin.org/
God considered inflicting XSLT as the tenth plague of Egypt, but then
decided against it because he thought it would be too evil.
Please reply to list if it's a mailing list post - http://shlom.in/reply .
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/