LSTOWN-L Archives

LISTSERV List Owners' Forum

LSTOWN-L

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
"Stephen W. Thompson" <[log in to unmask]>
Wed, 19 Aug 1998 12:36:33 -0400
text/plain (76 lines)
Gilles Frydman <[log in to unmask]> wrote on 14 Aug 1998:

> >[someone else wrote:]
> >You mean like it used to be, rather than this "explanation" stuff
> >we have now?  Yeah, I lobbied intensively for listowners to be able
> >to get the old style display as an option but no one payed much attention
[snip]
>
> It doesn't take much to write a perl script to get only some of the info
> you need.

I've been meaning to do this for a while.  I hereby submit my effort.
Probably can be improved or redesigned, and based on the fact that I
don't use it often, it may be more clunky than it's worth.  Feedback
welcome by direct mail.

En paz,
Steve
--
Stephen W. Thompson, U. of PA, Data Administration, 215-898-1236, WWW has PGP
  The only safe choice: Write e-mail as if it's public.  Cuz it could be.


== parsequery.p follows: ======================================

# Written by Stephen W. Thompson, [log in to unmask]

# Read results from "query" command sent to listserv as owner, parse
# for other uses

# Syntax: perl parsequery.p output_from_listserv_query_cmd > parsed.lst

# To Do: Make into objects; determine which attribute each option belongs
#        to and label it appropriately; create object for common tasks;
#        account for different Listserv versions; add disclaimer; parse
#        and use the last activity date (?) which follows some entries.

# Released into the public domain, August 1997.

# Disclaimer: This software is available as-is.  The author is not responsible
# for damages resulting from use of this program.  Etc., etc.

# History:
#   1997/08/21 Program initially written, SWT.

while (( $_ = <> ) !~ /^ *$/ ) {   # Assume there are mail headers
  # skip to first blank line after headers
  } # while header lines

while (<>) {
  next if /^> / ;
  if ( /^Subscription options for / ) {

    # First get their personal info
    $built_line = $_ ;
    chop( $built_line ) ;
    while ( $built_line !~ /:$/ ) {
      $_ = <> ;
      chop ;
      $built_line .= ' ' . $_ ;
      } # while more id lines
    ( $name, $addr, $list ) = $built_line =~
        /^Subscription options for "?([^<"]+)"? <([^>]+)>, list ([^:]+):/ ;

    # Now go for their subscription options
    $_ = <> ;  # Should be a blank line prior to options
    @options = () ;
    while ( ( $_ = <> ) !~ /^ *$/ ) {
      if ( /^([A-Z]+) / ) {
        push( @options, $1 ) ;
        }
      } # while options lines
    print "$list $addr $name ( " . join( ' ', @options ) . " )\n" ;
    } # if
  } # while

ATOM RSS1 RSS2