On Fri, 28 Dec 2001 14:52:23 -0600, [log in to unmask] wrote:

>I would like to write a report in Perl (similar to cntpost.rexx) to
>display activity for each of the lists on my server (OpenVMS).  However,
>I have a requirement to also display the number of members of a list
>(for the day of the report) as an additional statistic.  I have
>reviewed some of the rexx scripts available, but can't find anyway to
>get this number of members count.
>
>Any pointers on how to get that number?  Remember, not every list has
>activity over the reporting period so I cannot use the number of
>recepients value.

The following are all Perl one-liners that I use to quickly get information
about lists.  They directly parse the *.list file.  (You'll have to copy and
paste these onto a single line since email will wrap them)

I hope people find them useful.
Glenn  <http://www.netspace.org> <http://lists.netspace.org>

For extracting emails from a single list file

cat $LSROOT/home/mylistfile.list | perl -p -e 's/^.{11}//,
s/\*.{99}|(.{100})/$1\n/g, s/ +$//gm, s/\n+/\n/g, s/^\n//mg'

(for what you want to do, Richard, just add "| wc -l" to the end of the above)

For extracting emails from all list files (prints blank line between lists)

cat $LSROOT/home/*.list | perl -p -e 's/^.{11}//, s/\*.{99}|(.{100})/$1\n/g,
s/ +$//gm, s/\n+/\n/g'

Unique emails over all lists

cat $LSROOT/home/*.list | perl -p -e 's/^.{11}//, s/\*.{99}|(.{100})/$1\n/g,
s/ +$//gm, s/\n+/\n/g'
| grep '@' | awk '{print $1}' | sort -u

For extracting list headers

cat $LSROOT/home/*.list | perl -p -e s/^.{11}//, s/(\*.{99})|.*/$1\n/g, s/
+$//gm'

For extracting list headers (prints a blank line between lists)

cat $LSROOT/home/*.list | perl -p -e 's/^.{11}//, s/(\*.{99})|.*/$1\n/g, s/
+$//gm'


Standard disclaimer:
From these one-liners, you might get the idea to construct scripts to
directly modify the $LSROOT/home/*.list files.  DO NOT.  Changing them under
the nose of lsv is not a very bright thing to do.  The LISTSERV manual warns
not to do this.