[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