Very nice to know about CPAN.

got a syntax error though with your script

syntax error at ./getACLinfo.pl line 51, near "say join"
Execution of ./getACLinfo.pl aborted due to compilation errors.

[code]
#!/usr/bin/perl

use strict;
use SVN::Access;
my $acl = SVN::Access->new( acl_file => 'data' );

# Walk through the resources in the ACL file:
for my $repopath ($acl->resources) {
   # For this resource, find out what authorisations exist:
   for my $auth ($repopath->authorized) {

       # $repopath->authorized gives us hashrefs of group => perms
       # TODO: I don't know if it might also give individual users, if
       # had per-user grants.
       my ($group, $perms) = each %$auth;

       if ($group =~ s/^@//) {
           # For each group, list out the members, along with the repo
           # permissions

           for my $user ($acl->group($group)->members) {
               say join '~', $user, $repopath->name, $group, $perms;
           }
       } else {
           die "Can't handle individual user permissions!";
       }
   }
}
[/code]

On Jul 3, 2012, at 11:25 AM, David Precious wrote:

> On Tue, 3 Jul 2012 09:47:00 -0400
> Phil Pinkerton <pcpinker...@gmail.com> wrote:
> 
>> I was given a project that seems to require Perl
>> 
>> I could use a sample just to extract a list of names associated with
>> a group or repo and print them.
>> 
>> 1) Assigned a task to extract data fron a text file.
>> 2) Output file needs to be very specific, and created monthly
>> 3) tried doing in korn shell too complex
>> 4) Figured Perl my best option, but don't know Perl
>> 5) Got  the Modern Perl in PDF format
>> 6) Installed Strawberry Perl
>> 
>> Output format is simple ??, but extracting the data and printing it
>> I haven't a clue where to start. ( I am not trying to get someone to
>> write this for me, just a simple extract and print example and point
>> me in the right direction )
> 
> First pointer - a lot of things you want to do in Perl will be a lot
> easier if you consult CPAN to see if someone has done this before and
> shared reusable code which will make your life easier.
> 
> In this case, you've not described what the input data is, but to me it
> looks very much like a Subversion access control file.  So, with that
> in mind, I searched CPAN, and found SVN::Access:
> 
> https://metacpan.org/module/SVN::Access
> 
> Ahah - looks like it takes all the hard work out of things for you -
> it'll take care of the parsing, and let you just get at the data.
> 
> So, glancing at its docs and whipping something up:
> 
> [code]
> #!/usr/bin/perl
> 
> use strict;
> use SVN::Access;
> my $acl = SVN::Access->new( acl_file => 'data' );
> 
> # Walk through the resources in the ACL file:
> for my $repopath ($acl->resources) {
>    # For this resource, find out what authorisations exist:
>    for my $auth ($repopath->authorized) {
> 
>        # $repopath->authorized gives us hashrefs of group => perms
>        # TODO: I don't know if it might also give individual users, if
>        # had per-user grants.
>        my ($group, $perms) = each %$auth;
> 
>        if ($group =~ s/^@//) {
>            # For each group, list out the members, along with the repo
>            # permissions
> 
>            for my $user ($acl->group($group)->members) {
>                say join '~', $user, $repopath->name, $group, $perms;
>            }
>        } else {
>            die "Can't handle individual user permissions!";
>        }
>    }
> }
> [/code]
> 
> If you install SVN::Access, the above should work for you, and should
> produce mostly what you need, e.g.:
> 
> ritched2~repo1:/~repo1_devs~r
> appalas~repo1:/~repo1_devs~r
> 
> Handing the _admn groups as a special case is left as an exercise to
> you, but should be reasonably easy given the above as a starting point.
> 
> 
> 
> -- 
> David Precious ("bigpresh") <dav...@preshweb.co.uk>
> http://www.preshweb.co.uk/     www.preshweb.co.uk/twitter
> www.preshweb.co.uk/linkedin    www.preshweb.co.uk/facebook
> www.preshweb.co.uk/cpan        www.preshweb.co.uk/github
> 
> 
> -- 
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
> 
> 


-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to