I don't think I understand this. per perldoc and your instruction this
should work.

my @exclude = qw /du huh . ../;
%exclude = map {$_=>1} @exculde;
 

print "$_\n" foreach (@exclude); # Prints  array
print "$k $v\n" while (($k,$v) = each %exclude); #prints nothing.

Paul
> -----Original Message-----
> From: Bob Showalter [mailto:[EMAIL PROTECTED]] 
> Sent: Friday, December 13, 2002 10:44 AM
> To: 'Paul Kraus'; 'Perl'
> Subject: RE: Conditional Array lookup
> 
> 
> > -----Original Message-----
> > From: Paul Kraus [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, December 13, 2002 10:19 AM
> > To: 'Perl'
> > Subject: Conditional Array lookup
> > 
> > 
> > Is there a way to do an if or unless against an entire array.
> > 
> > @exclude = ....
> > 
> > #compare $soomevaraible to every element of @exclude.
> > unless ($somevariable eq @exclude){
> >     ...
> > }
> 
> The FAQ addresses this:
> 
>    perldoc -q 'How can I tell whether a list or array 
> contains a certain element?'
> 
> From your example, it sounds like @exclude is a list of 
> things you want to test against repeatedly. If so, turn 
> @exclude into a hash:
> 
>    %exclude = map { $_=>1 } @exclude;
> 
> Now you can test quickly:
> 
>    unless (exists $exclude{$somevar}) {
>        print "$somevar is OK\n";
>    }
> 
> If you only need to check once, grep() is ok:
> 
>    unless (grep { $_ eq $somevar } @exclude) {
>        print "$somevar is OK\n";
>    }
> 
> But don't do that repeatedly; use the hash instead.
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to