[Cedarvalley] upload problem

Stephen D. Wells wells at cedarnet.org
Wed Mar 31 14:18:53 CST 2004


Or even...

if({ map { $_ => 1 } split(" ",`id -nG $self->{_user_name}`)
	}->{valid_group}) {
   # I'm valid
}

:)

STEVE

On Wed, 2004-03-31 at 13:21, Aaron Thompson wrote:
> Nice, I ran into to places this would have been useful with lists
> in the last week - instead I ended up using a hash:
> 
> my %groups;
> for my $group (split(" ",`id -nG $self->{_user_name}`)){$groups{$group}++;}
> ...
> 
> if($groups{'valid_group'}){
>  #I'm a group memeber
> }#fi
> 
> Your line could have been used instead:
> 
> my @groups = split(" ",`id -nG $self->{_user_name}`);
> ...
> if({ map { $_ => 1 } @groups }->{'valid_group'}){
>   #I'm a group member
> }
> 
> @
> 
> On Wed, Mar 31, 2004 at 12:24:53PM -0600, Stephen D. Wells wrote:
> > You probably have already seen this but I just stumbled across it, liked
> > it and thought I'd pass it along...
> > 
> > * A one-liner for checking to see if a value exists in a list:
> > if ({ map { $_ => 1 } qw(apple orange lemon) }->{apple}) {
> >     # do stuff
> > }
> > 
> > Here's what's happening:
> > 
> > We are creating an anonymous hash of the values in the list:
> >   { apple => 1, orange => 1, lemon => 1 }
> > 
> > Then checking to see if that hash exists
> >   { apple => 1, orange => 1, lemon => 1 }->{apple} # should return 1
> > 
> > This replaces code that you see all the time like this:
> > my $found = 0;
> > {
> >  for (qw(apple orange lemon)) {
> >      next unless $_ eq "apple";
> >      $found++;
> >      last;
> >   }
> > }
> > if ($found) {
> >    # do stuff
> > }
> > 
> > * more complex example
> > 
> > I've been using the Class::DBI module for some extranet reporting
> > software I created and have a table structure like so:
> > 
> > user	user_access	access
> > ----	-----------	------
> > id	id		id
> > name	user_id		name
> > pass	access_id
> > 
> > see Class::DBI for how to build your Classes
> > 
> > in one line I can check to see if this user is in the 'admin' group and
> > allow my administration functions to override the user functions using
> > the following:
> > 
> > if ({ map { $_->access_id->name => 1 }
> > 	 (EX::DBI::User->accesses)}->{'admin'}) {
> >    require "EX/Admin.pm";
> >    push (@ISA, 'EX::Admin');
> > }
> > 
> > I was kinda' impressed with the fact there it's such a compact piece of
> > code.
> > 
> > Thoughts?
> > STEVE
> > 
> > _______________________________________________
> > Cedarvalley mailing list
> > Cedarvalley at mail.pm.org
> > http://mail.pm.org/mailman/listinfo/cedarvalley
-- 
Stephen D. Wells <wells at cedarnet.org>




More information about the Cedarvalley mailing list