[9626] in Perl-Users-Digest

home help back first fref pref prev next nref lref last post

Perl-Users Digest, Issue: 3220 Volume: 8

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Wed Jul 22 01:07:12 1998

Date: Tue, 21 Jul 98 22:00:24 -0700
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)

Perl-Users Digest           Tue, 21 Jul 1998     Volume: 8 Number: 3220

Today's topics:
        (mutil level assoc arrays and dynamically created array neilm@il.us.swissbank.com
        (mutil level assoc arrays and dynamically created array neilm@il.us.swissbank.com
        (mutil level assoc arrays and dynamically created array neilm@il.us.swissbank.com
        (mutil level assoc arrays and dynamically created array neilm@il.us.swissbank.com
    Re: Cant figure pattern matching exp =~ (Larry Rosler)
    Re: Debugging Perl 5.x <mpersico@erols.com>
    Re: Debugging Perl 5.x (Ronald J Kimball)
    Re: Eval Problem (Ronald J Kimball)
        Formats question <jfulmer@whiteoaknet.com>
    Re: Formats question (Martien Verbruggen)
    Re: hash undef problem (John Klassa)
    Re: Hiding input (Abigail)
    Re: How to connect to a socket ? <rra@stanford.edu>
    Re: How to delete files from perl (Abigail)
        Is there any way to Make this Script.. (MTNBIKE151)
        Mod User Reg Hives w/ Win32 Perl <kcjones@umich.edu>
        Module scope livshits@acm.org
    Re: More on Perl Conference 2.0 (Brandon S. Allbery KF8NH)
    Re: More on Perl Conference 2.0 <tchrist@mox.perl.com>
        MQSeries (Henry Chan)
    Re: open (IN, "foo.txt") works, open (IN, "$foo") does  (Ronald J Kimball)
    Re: Perl Beautifier Home Page lvirden@cas.org
    Re: Perl Beautifier Home Page (Snowhare)
    Re: Perl Beautifier Home Page <rra@stanford.edu>
        perl executable for win95 <shane@baylinks.com>
    Re: print FIC  :  An easy question ! (Ronald J Kimball)
    Re: Reading in an email message into a Perl program (Ronald J Kimball)
    Re: regexp question <cmason@ros.res.cmu.edu>
    Re: Sorting Lists of Lists (Mark-Jason Dominus)
        Strange problem.... <zjm@fast-inc.com>
    Re: Using splice with for (Ronald J Kimball)
    Re: Web Components lvirden@cas.org
    Re: What is awk better at than perl? (Larry quote) <uri@sysarch.com>
        Special: Digest Administrivia (Last modified: 12 Mar 98 (Perl-Users-Digest Admin)

----------------------------------------------------------------------

Date: Tue, 21 Jul 1998 21:15:40 GMT
From: neilm@il.us.swissbank.com
Subject: (mutil level assoc arrays and dynamically created array names via eval)
Message-Id: <1998Jul21.211540.21983@il.us.swissbank.com>

Hi,

I'm building some assoc arrays names using eval():

foreach $cnt (1, 2, 3) {
    foreach $type ("big", "small") {
        eval "\$${type}Count ++";
        eval "\$${type}Name  = \$${type}Name . 'test'";
        foreach $myKey ("teeny", "tiny") {
            eval "\$${type}AssocArr{$myKey} += 4" ;
        }
    }

When this much of the code gets executed, these vars in place:

$bigCount = 3
$bigName = "testtesttest"
$bigAssocArr{"teeny"} = 12
$bigAssocArr{"tiny"} =  12
$smallCount = 3
$smallName = "testtesttest" 
$bigAssocArr{"teeny"} = 12
$bigAssocArr{"tiny"} = 12


The problem starts because $myKey ("teeny", "tiny") is a standin for the  
real keys I need to read in from my datafile.
	($fld1, $fld2, $fld3) = split(/  /);
	$myKey = $fld3 . $fld1;

So... I need to cycle thru myKeys, when I don't know what the  keys are  
(programatically speaking of course :^).

I've tried 
foreach $type ("big", "small") { 
	$tmpAssoc = eval("\$${type}AssocArr");
	foreach $key (keys %tmpAssoc) {
		print "key = $key    val = %tmpAssoc{$key}\n";
	}
}

At least this version doesn't crash (but it doesn't print anything from  
the bottom half). It acts like (keys %tmpAssoc) is empty, but either I'm  
not referencing it correctly  or I need another level of eval in the 
(keys %tmpAssoc) section. I've tried several combinations of eval and keys  
in that final foreach loop, but get syntax errors.
 
Finally, I'll mention that I have tried many things and now while reducing  
to this simiple test case, I may have inadvertantly let a few syntax  
errors creep in (sorry if that is true).

Why am I doing this? I am adding some major functionality to an existing  
program, and much of the existing code is really the same block repeated  
over and over, except that the array names change.

Thanks for any help,

Neil Mahoney
#include <std/disclaimer.h> (oops!)


------------------------------

Date: Tue, 21 Jul 1998 18:35:02 GMT
From: neilm@il.us.swissbank.com
Subject: (mutil level assoc arrays and dynamically created array names via eval)
Message-Id: <1998Jul21.183502.19463@il.us.swissbank.com>

Hi,

I'm building some assoc arrays names using eval():

foreach $cnt (1, 2, 3) {
    foreach $type ("big", "small") {
        eval "\$${type}Count ++";
        eval "\$${type}Name  = \$${type}Name . 'test'";
        foreach $myKey ("teeny", "tiny") {
            eval "\$${type}AssocArr{$myKey} += 4" ;
        }
    }

When this much of the code gets executed, these vars in place:

$bigCount = 3
$bigName = "testtesttest"
$bigAssocArr{"teeny"} = 12
$bigAssocArr{"tiny"} =  12
$smallCount = 3
$smallName = "testtesttest" 
$bigAssocArr{"teeny"} = 12
$bigAssocArr{"tiny"} = 12


The problem starts because $myKey ("teeny", "tiny") is a standin for the  
real keys I need to read in from my datafile.
	($fld1, $fld2, $fld3) = split(/  /);
	$myKey = $fld3 . $fld1;

So... I need to cycle thru myKeys, when I don't know what the  keys are  
(programatically speaking of course :^).

I've tried 
foreach $type ("big", "small") { 
	$tmpAssoc = eval("\$${type}AssocArr");
	foreach $key (keys %tmpAssoc) {
		print "key = $key    val = %tmpAssoc{$key}\n";
	}
}

At least this version doesn't crash (but it doesn't print anything from  
the bottom half). It acts like (keys %tmpAssoc) is empty, but either I'm  
not referencing it correctly  or I need another level of eval in the 
(keys %tmpAssoc) section. I've tried several combinations of eval and keys  
in that final foreach loop, but get syntax errors.
 
Finally, I'll mention that I have tried many things and now while reducing  
to this simiple test case, I may have inadvertantly let a few syntax  
errors creep in (sorry if that is true).

Why am I doing this, ... I hope to be to reduce a thousand line program to  
about 200. All of the existing code is really the same block repeated over  
and over, except that the array names change.

Thanks for any help,

Neil Mahoney
#include <std/disclaimer.h> (oops!)


------------------------------

Date: Tue, 21 Jul 1998 21:42:35 GMT
From: neilm@il.us.swissbank.com
Subject: (mutil level assoc arrays and dynamically created array names via eval)
Message-Id: <1998Jul21.214235.22118@il.us.swissbank.com>

Hi,

I'm building some assoc arrays names using eval():

foreach $cnt (1, 2, 3) {
    foreach $type ("big", "small") {
        eval "\$${type}Count ++";
        eval "\$${type}Name  = \$${type}Name . 'test'";
        foreach $myKey ("teeny", "tiny") {
            eval "\$${type}AssocArr{$myKey} += 4" ;
        }
    }

When this much of the code gets executed, these vars in place:

$bigCount = 3
$bigName = "testtesttest"
$bigAssocArr{"teeny"} = 12
$bigAssocArr{"tiny"} =  12
$smallCount = 3
$smallName = "testtesttest" 
$bigAssocArr{"teeny"} = 12
$bigAssocArr{"tiny"} = 12


The problem starts because $myKey ("teeny", "tiny") is a standin for the  
real keys I need to read in from my datafile.
	($fld1, $fld2, $fld3) = split(/  /);
	$myKey = $fld3 . $fld1;

So... I need to cycle thru myKeys, when I don't know what the  keys are  
(programatically speaking of course :^).

I've tried 
foreach $type ("big", "small") { 
	$tmpAssoc = eval("\$${type}AssocArr");
	foreach $key (keys %tmpAssoc) {
		print "key = $key    val = %tmpAssoc{$key}\n";
	}
}

At least this version doesn't crash (but it doesn't print anything from  
the bottom half). It acts like (keys %tmpAssoc) is empty, but either I'm  
not referencing it correctly  or I need another level of eval in the 
(keys %tmpAssoc) section. I've tried several combinations of eval and keys  
in that final foreach loop, but get syntax errors.
 
Finally, I'll mention that I have tried many things and now while reducing  
to this simiple test case, I may have inadvertantly let a few syntax  
errors creep in (sorry if that is true).

Why am I doing this? I am adding some major functionality to an existing  
program, and much of the existing code is really the same block repeated  
over and over, except that the array names change.

Thanks for any help,

Neil Mahoney
#include <std/disclaimer.h> (oops!)


------------------------------

Date: Tue, 21 Jul 1998 14:17:49 GMT
From: neilm@il.us.swissbank.com
Subject: (mutil level assoc arrays and dynamically created array names via eval)
Message-Id: <1998Jul21.141749.16044@il.us.swissbank.com>

Hi,

I'm building some assoc arrays names using eval():

foreach $cnt (1, 2, 3) {
    foreach $type ("big", "small") {
        eval "\$${type}Count ++";
        eval "\$${type}Name  = \$${type}Name . 'test'";
        foreach $myKey ("teeny", "tiny") {
            eval "\$${type}AssocArr{$myKey} += 4" ;
        }
    }

When this much of the code gets executed, these vars in place:

$bigCount = 3
$bigName = "testtesttest"
$bigAssocArr{"teeny"} = 12
$bigAssocArr{"tiny"} =  12
$smallCount = 3
$smallName = "testtesttest" 
$bigAssocArr{"teeny"} = 12
$bigAssocArr{"tiny"} = 12


The problem starts because $myKey ("teeny", "tiny") is a standin for the  
real keys I need to read in from my datafile.
	($fld1, $fld2, $fld3) = split(/  /);
	$myKey = $fld3 . $fld1;

So... I need to cycle thru myKeys, when I don't know what the  keys are  
(programatically speaking of course :^).

I've tried 
foreach $type ("big", "small") { 
	$tmpAssoc = eval("\$${type}AssocArr");
	foreach $key (keys %tmpAssoc) {
		print "key = $key    val = %tmpAssoc{$key}\n";
	}
}

At least this version doesn't crash (but it doesn't print anything from  
the bottom half). It acts like (keys %tmpAssoc) is empty, but either I'm  
not referencing it correctly  or I need another level of eval in the 
(keys %tmpAssoc) section. I've tried several combinations of eval and keys  
in that final foreach loop, but get syntax errors.
 
Finally, I'll mention that I have tried many things and now while reducing  
to this simiple test case, I may have inadvertantly let a few syntax  
errors creep in (sorry if that is true).

Why am I doing this, ... I hope to be to reduce a thousand line program to  
about 200. All of the existing code is really the same block repeated over  
and over, except that the array names change.

Thanks for any help,

Neil Mahoney
#include <std/disclaimer.h> (oops!)


------------------------------

Date: Tue, 21 Jul 1998 18:09:52 -0700
From: lr@hpl.hp.com (Larry Rosler)
Subject: Re: Cant figure pattern matching exp =~
Message-Id: <MPG.101edbbb7cb0c1f989736@nntp.hpl.hp.com>

[Posted to comp.lang.perl.misc and a courtesy copy sent to Martien 
Verbruggen <mgjv@comdyn.com.au>.]

In article <6p3c2q$8v$1@nswpull.telstra.net> on 22 Jul 1998 00:34:34 GMT, 
Martien Verbruggen <mgjv@comdyn.com.au> says...
> I said:
> 
> >> > BUT what is happening with the $_ =~ s? ??g;
> >> 
> >> This is equivalent to 
> >> 
> >> s/ //g;
 ... 
> perlop only mentions ?PATTERN?, with a note for m?PATTERN?. It doesn't
> mention specifically that s?PATTERN/REPLACEMENT? also follows these
> rules. (checked 5.004_04 and 5.004_64 docs)
 ...
> Am I misunderstanding the point, or is the documentation right? :)

My test:

foreach (0, 1) { $_ = "foo foo\n"; ?foo? and print; s?foo?bar?; print }

prints:

foo foo
bar foo
bar foo

It matches once only, but substitutes each time.  The documentation is 
right again. :(

-- 
Larry Rosler
Hewlett-Packard Laboratories
http://www.hpl.hp.com/personal/Larry_Rosler/
lr@hpl.hp.com


------------------------------

Date: Tue, 21 Jul 1998 22:11:22 -0400
From: "Matthew O. Persico" <mpersico@erols.com>
To: skillit@my-dejanews.com
Subject: Re: Debugging Perl 5.x
Message-Id: <35B54A4A.AA68C4F9@erols.com>

skillit@my-dejanews.com wrote:
> 
> $ test2.pl
> Bad name after CLEARSTART_HOME:: at test2.pl line 36.
> 
>  I am really getting tired of this message!!!!
> Does anyone know of a good resource for debugging perl?

perl -d yadayada runs your script in debug mode. perldoc perldebug or
man perldebug will give you the commands.

If you happen to be running emacs or xemacs, issue M-x perldb and the
debugger runs in [X]emacs, a much better interface than just perl -d


------------------------------

Date: Wed, 22 Jul 1998 00:03:16 -0400
From: rjk@coos.dartmouth.edu (Ronald J Kimball)
Subject: Re: Debugging Perl 5.x
Message-Id: <1dcjebn.gkvkrd1ahrg56N@bay1-314.quincy.ziplink.net>

[posted and mailed]

<skillit@my-dejanews.com> wrote:

> $ test2.pl
> Bad name after CLEARSTART_HOME:: at test2.pl line 36.

You should really mark line 36 in your code, for those of us too lazy to
count that high.  ;-)

In variable names, ' is a synonym for ::.  Glancing at your code, the
above error message suggests that you have a single-quoted string
missing one of the quotes.  Thus, the initial quote in 'CLEARSTART_HOME'
on line 36 is *closing* a string, instead of beginning one.

>  I am really getting tired of this message!!!!
> Does anyone know of a good resource for debugging perl?
> Is there a perldoc explaining error messages?

perldiag, perhaps?  It's part of the standard documentation, and listed
in perltoc.

> For those of you who just love to solve problems look at the
> following code. See anything obvious? {beside the point that it is incomplete}
> I believe the problem lies somewhere within the getenv subroutine.

I believe you are mistaken.

> $tmp_filename  = 'c:\temp\' . $$ . ".txt";
                           ^^
> [no more single quotes until line 36...]
>    $i = &getenv('CLEARSTART_HOME');

Hmm...  Backslashing the quote that's supposed to end the string is
generally a bad idea.  What you meant was 'c:\\temp\\'.  ('c:\temp\\'
would also work, but only because it's a single quoted string.)

On the other hand, you don't need to use backslashes at all.  Just use
forward slashes; within Perl, they work for directory separators on NT.

-- 
 _ / '  _      /         - aka -         rjk@coos.dartmouth.edu
( /)//)//)(//)/(     Ronald J Kimball      chipmunk@m-net.arbornet.org
    /                                  http://www.ziplink.net/~rjk/
        "It's funny 'cause it's true ... and vice versa."


------------------------------

Date: Wed, 22 Jul 1998 00:03:18 -0400
From: rjk@coos.dartmouth.edu (Ronald J Kimball)
Subject: Re: Eval Problem
Message-Id: <1dcjeup.vo1ub91i4xajmN@bay1-314.quincy.ziplink.net>

Greg Bacon <gbacon@cs.uah.edu> wrote:

> Gid rid of the backslashes inside the single quotes (backslash only
> quotes single quotes inside single quotes).

(And other backslashes, of course.  :-)

-- 
 _ / '  _      /         - aka -         rjk@coos.dartmouth.edu
( /)//)//)(//)/(     Ronald J Kimball      chipmunk@m-net.arbornet.org
    /                                  http://www.ziplink.net/~rjk/
        "It's funny 'cause it's true ... and vice versa."


------------------------------

Date: Tue, 21 Jul 1998 15:31:53 -0400
From: Jeffrey Fulmer <jfulmer@whiteoaknet.com>
Subject: Formats question
Message-Id: <35B4ECA9.BFEAB02@whiteoaknet.com>

Hi,
I'm really stumped.  I'm trying to send formated mail...

$sendmail = "/usr/bin/qmail-inject -f " . qq("jfulmer\@whiteoaknet.com")
 . " jfulmer";
open( SENDMAIL, "| $sendmail");

$~ = "HEADER";
write SENDMAIL;

}  # end

format HEADER =
Billing Name                                    Shipping Name
 .

Could somebody steer me in the right direction?  I'd appreciate it.
Thanks,
Jeff



------------------------------

Date: 22 Jul 1998 02:53:42 GMT
From: mgjv@comdyn.com.au (Martien Verbruggen)
Subject: Re: Formats question
Message-Id: <6p3k7m$520$1@nswpull.telstra.net>

In article <35B4ECA9.BFEAB02@whiteoaknet.com>,
	Jeffrey Fulmer <jfulmer@whiteoaknet.com> writes:
> Hi,
> I'm really stumped.  I'm trying to send formated mail...
> 
> $sendmail = "/usr/bin/qmail-inject -f " . qq("jfulmer\@whiteoaknet.com")
> . " jfulmer";

What are you doing here???

> open( SENDMAIL, "| $sendmail");

How do you know that your pipe open actually succeeded?

Always check the return code of an open. For a pipe you might have to
check other things as well.

# perldoc -f open
# perldoc perlfaq8
     Why doesn't open() return an error when a pipe open fails?

> $~ = "HEADER";
> write SENDMAIL;
> 
> }  # end
> 
> format HEADER =
> Billing Name                                    Shipping Name
> .

So... which variables do you actually want printed? And how do you
want it printed? Have you read the manual pages on format?

# perldoc -f format
# perldoc perlform

> Could somebody steer me in the right direction?  I'd appreciate it.

The right direction, I think, is for you to check the documentation,
and to do what it suggests. Blindly trying something and wondering why
it works isn't going to help you.

Martien
-- 
Martien Verbruggen                  | 
Webmaster www.tradingpost.com.au    | 
Commercial Dynamics Pty. Ltd.       | What's another word for Thesaurus?
NSW, Australia                      | 


------------------------------

Date: 22 Jul 1998 01:22:29 GMT
From: klassa@aursgh.aur.alcatel.com (John Klassa)
Subject: Re: hash undef problem
Message-Id: <6p3esl$72l$1@aurwww.aur.alcatel.com>

On 17 Jul 1998 21:33:06 GMT, Eric Sheng <shenge@ece.ucdavis.edu> wrote:
  > what I need to do at one point is "undef" all the data structure under a
  > certain $element_name.  I am doing:

% man perlfaq4
What's the difference between "delete" and "undef" with hashes?

-- 
John Klassa / Alcatel Telecom / Raleigh, NC, USA <><


------------------------------

Date: 22 Jul 1998 01:34:54 GMT
From: abigail@fnx.com (Abigail)
Subject: Re: Hiding input
Message-Id: <6p3fju$85s$2@client3.news.psi.net>

Rick Bauman (rick@internetx.net) wrote on MDCCLXXXV September MCMXCIII in
<URL: news:19980721185145.AAB15012@sub.internetx.net>:
++ If I do the following;
++ 
++ chop($number = <STDIN>)
++ 
++ How can I keep the users input from echoing back to his screen?
++ How can I make it echo back as a series of characters such as the *


RTFFAQ.


Abigail
-- 
perl5.004 -wMMath::BigInt -e'$^V=new Math::BigInt+qq;$^F$^W783$[$%9889$^F47$|88768$^W596577669$%$^W5$^F3364$[$^W$^F$|838747$[8889739$%$|$^F673$%$^W98$^F76777$=56;;$^U=substr($]=>$|=>5)*(q.25..($^W=@^V))=>do{print+chr$^V%$^U;$^V/=$^U}while$^V!=$^W'


------------------------------

Date: 21 Jul 1998 19:52:34 -0700
From: Russ Allbery <rra@stanford.edu>
Subject: Re: How to connect to a socket ?
Message-Id: <m390lmha19.fsf@windlord.Stanford.EDU>

David Coldrick <davidc@selectst.com> writes:

> Well, so far, there's not much happening on clp.moderated - at least,
> after it's been moderated :-)

Newsgroups inevitably take a while to get started, or even get carried
everywhere.  Give it a few months.

-- 
#!/usr/bin/perl -- Russ Allbery, Just Another Perl Hacker
$^=q;@!>~|{>krw>yn{u<$$<[~||<Juukn{=,<S~|}<Jwx}qn{<Yn{u<Qjltn{ > 0gFzD gD,
 00Fz, 0,,( 0hF 0g)F/=, 0> "L$/GEIFewe{,$/ 0C$~> "@=,m,|,(e 0.), 01,pnn,y{
rw} >;,$0=q,$,,($_=$^)=~y,$/ C-~><@=\n\r,-~$:-u/ #y,d,s,(\$.),$1,gee,print


------------------------------

Date: 22 Jul 1998 01:34:34 GMT
From: abigail@fnx.com (Abigail)
Subject: Re: How to delete files from perl
Message-Id: <6p3fja$85s$1@client3.news.psi.net>

Neelam Saini (neelam@healtheon.com) wrote on MDCCLXXXV September MCMXCIII
in <URL: news:35B520DF.97D60B81@healtheon.com>:
++ Using perl on UNIX. How do I delete files from perl. I am creating the
++ file using open <filename>

RTFM.


Abigail
-- 
perl5.004 -wMMath::BigInt -e'$^V=new Math::BigInt+qq;$^F$^W783$[$%9889$^F47$|88768$^W596577669$%$^W5$^F3364$[$^W$^F$|838747$[8889739$%$|$^F673$%$^W98$^F76777$=56;;$^U=substr($]=>$|=>5)*(q.25..($^W=@^V))=>do{print+chr$^V%$^U;$^V/=$^U}while$^V!=$^W'


------------------------------

Date: 22 Jul 1998 04:03:52 GMT
From: mtnbike151@aol.com (MTNBIKE151)
Subject: Is there any way to Make this Script..
Message-Id: <1998072204035200.AAA28087@ladder01.news.aol.com>

Hello Everyone,

I'm new to perl programming and I'm busting my brain trying to fix this script
My problem is that when I search I want it to bring up the most revenant
searches 1st. I.e. If I search for the number "504" I don't want it to bring up
01-504, 09-504 earlier in the Search Results because of the numerical order of
the data file. 01-504 being considered a 2-digit number. Is there any thing
that I can do about this?


NOTE: I used name & city as an easy way to differentiate between the 2 fields.

#!/usr/bin/perl5.003
# COPY OF SAMPLE DATABASE FILE

#1|USE #160344
#1-118L|USE #11402
#1-160|USE #F64038
#1-189|USE #11501
#1-828-N2|USE #10-1028-2
#1-A28-N2|USE #10-1028-2
#1-D600|USE #10-4600-0-000
#1/8S40006|USE #062660-6-12
#2|USE #120938
#2-1/2|USE #120803
#2-19|USE #270010
#2-20|USE #541678NBL
#2-21|USE #127119

# Define the variables
$filename = "data.dat";  # the database file, relative or absolute path, no URL
$numresults = 0; # the counter for matching records
&parse_form; #self explanitory
print "Content-type:text/html\n\n";
print
<html><head><title>Part Search Results</title></head>
<body>
HTMLHead
;
open(DB,$filename); # opens the file
@indata = <DB>; #dumps the data into an array
close(DB); # if you can't figure this one out ... duh!

&count_results; # call the counter sub-routine
&search_output; # calls the output sub-routine

####
sub count_results {
 foreach $i (@indata) {
  chop($1);
  ($name,$city) = split (/\|/,$i);
  
  if ($in{'category'} eq "name") { # this checks to see what column you're
searching
   if ($name =~ /$in{'data_in'}/i) { # checks whether the record contain the
input in this column?
    $numresults = $numresults + 1; # adds 1 to the number of matches
   }
  }
  elsif ($in{'category'} eq "city") { # this checks to see what column you're
searching
   if ($city =~ /$in{'data_in'}/i) { # checks whether the record contain the
input in this column?
    $numresults = $numresults + 1;
   }
  }
 }
 print "Your search for \"$in{'data_in'}\" in \"$in{'category'}\" produced<B>
$numresults </B>results.<BR>\n";
}
####
####
sub search_output {
 print "<table border=1>\n";
 print "<tr><th>Part</th><th>Description</th>\n";

 foreach $i (@indata) {
  chop($i);                    
  ($name,$city,$province,$country) = split(/\|/,$i);

  if ($name eq "") { # checks whether the field is empty
   $name = "\&nbsp\;"; # Fills the empy field with an HTML space so table has
proper look
  }
  if ($city eq "") { # checks whether the field is empty
   $city = "\&nbsp\;"; # Fills the empy field with an HTML space so table has
proper look
  }
  if ($in{'category'} eq "name") { # this checks to see what column you're
searching
   if ($name =~ /$in{'data_in'}/i) { # checks whether the record contain the
input in this column?
    # adds the row to the output table
    print "<tr>\n";
    print "<td>$name</td>\n";
    print "<td>$city</td>\n";
    print "</tr>\n";
   }
  }
  elsif ($in{'category'} eq "city") { # this checks to see what column you're
searching
   if ($city =~ /$in{'data_in'}/i) { # checks whether the record contain the
input in this column?
    # adds the row to the output table
    print "<tr>\n";
    print "<td>$name</td>\n";
    print "<td>$city</td>\n";
    print "</tr>\n";
   }
  }
 }
}
####
print "</table>\n";
print "</body></html>\n";
####
sub parse_form { # DO NOT MODIFY
 read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
 @pairs = split(/&/, $buffer);
 foreach $pair (@pairs) {
  ($names, $value) = split(/=/, $pair);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/<!--(.|\n)*-->//g;
  $in{$names} = $value;
 }
}


------------------------------

Date: Wed, 22 Jul 1998 02:51:01 GMT
From: Kevin Jones <kcjones@umich.edu>
Subject: Mod User Reg Hives w/ Win32 Perl
Message-Id: <psct1.4641$24.27532903@news.itd.umich.edu>

I have version 5.00402 of the binary dist of win32 perl.  I'm trying to
open and modify a user's registry hive while logged in as a different
user.  I've tried everything I can think of, but haven't yet succeeded.

Any Ideas?

-Kevin Jones
--								       
kevin jones					We are the music makers;    
kcjones@umich.edu			  We are the dreamers of dreams.        
 							 -Willy Wonka


------------------------------

Date: Wed, 22 Jul 1998 01:49:22 GMT
From: livshits@acm.org
Subject: Module scope
Message-Id: <6p3gf2$tii$1@nnrp1.dejanews.com>

Suppose I have package Foo and I want to call a globally defined procedure
from it. I can always do this by saying &main::proc, but is there a way to
replace the local scope (Foo::) by main:: so that I can just say proc and it
will look at main::proc and not Foo::proc. Hope this is not too confusing.
Any help will be greatly appreciated. Please email.

Thanks,
- Vladimir

-----== Posted via Deja News, The Leader in Internet Discussion ==-----
http://www.dejanews.com/rg_mkgrp.xp   Create Your Own Free Member Forum


------------------------------

Date: 21 Jul 1998 21:07:20 -0400
From: allbery@kf8nh.apk.net (Brandon S. Allbery KF8NH)
Subject: Re: More on Perl Conference 2.0
Message-Id: <6p3e08$68r$1@rushlight.kf8nh.apk.net>

Also sprach Randal Schwartz <merlyn@stonehenge.com> (<8cn2a3taig.fsf@gadget.cscaper.com>):
+-----
| Come to think of it, the only code I've ever written that was present
| in a distribution was that crazy "chat2.pl" that I've now completely
| disowned and had removed from the latest releases.  Oh yeah, and the
+--->8

Ummm, if that's the criterion then *I'm* a core developer.  Methinks that
particular way of identifying core developers loses....

-- 
brandon s. allbery	[os/2][linux][solaris][japh]	 allbery@kf8nh.apk.net
system administrator	     [WAY too many hats]	   allbery@ece.cmu.edu
electrical and computer engineering
carnegie mellon university			   (bsa@kf8nh is still valid.)


------------------------------

Date: 22 Jul 1998 02:19:02 GMT
From: Tom Christiansen <tchrist@mox.perl.com>
Subject: Re: More on Perl Conference 2.0
Message-Id: <6p3i6m$7g9$1@csnews.cs.colorado.edu>

 [courtesy cc of this posting sent to cited author via email]

In comp.lang.perl.misc, allbery@kf8nh.apk.net writes:
:Ummm, if that's the criterion then *I'm* a core developer.  Methinks that
:particular way of identifying core developers loses....

It would seem that core Perl developers must be those people who make
substantial contributions of their time and energy to produce something
that becomes part of the core, the folks who regularly turn in bug
fixes, tools, modules, and documentation to the core of the language.
It's a very simple criterion, really.  You wouldn't call the marketing
department a bunch of developers just because they *talk* about the
product a lot, now would you? :-)

--tom
-- 
Weinberg's Second Law: If builders built buildings the way programmers
write programs, the first woodpecker to come along would destroy civilization.


------------------------------

Date: 22 Jul 1998 01:11:51 GMT
From: hc@toraix1.torolab.ibm.com (Henry Chan)
Subject: MQSeries
Message-Id: <6p3e8n$16a0$1@tornews.torolab.ibm.com>

Does anyone have any perl source code to interface to MQSeries?

Thx,
Henry
hc@ca.ibm.com



------------------------------

Date: Wed, 22 Jul 1998 00:03:18 -0400
From: rjk@coos.dartmouth.edu (Ronald J Kimball)
Subject: Re: open (IN, "foo.txt") works, open (IN, "$foo") does not???
Message-Id: <1dcji1n.2a0j0y1o0ejgiN@bay1-314.quincy.ziplink.net>

J|rgen P|nter <Juergen.Puenter@materna.de> wrote:

> Thanks to everybody who helped me solving this problem.
> 
> It turned out to be totally unrelated to Perl after all.
> 
> Consider this problem solved.

So, what was the solution?  It was an interesting problem, so I'm
curious how you fixed it.

-- 
 _ / '  _      /         - aka -         rjk@coos.dartmouth.edu
( /)//)//)(//)/(     Ronald J Kimball      chipmunk@m-net.arbornet.org
    /                                  http://www.ziplink.net/~rjk/
        "It's funny 'cause it's true ... and vice versa."


------------------------------

Date: 22 Jul 1998 01:02:40 GMT
From: lvirden@cas.org
Subject: Re: Perl Beautifier Home Page
Message-Id: <6p3dng$e9g$1@srv38s4u.cas.org>


According to Zenin  <zenin@bawdycaste.org>:
:: If you wanted it to be understood and work reliably you would just do
:: $VERSION = "1.2.1";
:: 	and be done with it. But that's not very elite.
:
:	That's the problem, the above is *not* reliable.


The other question I wish folk would consider is what CPAN.pm looks for.
It is rather frustrating to find various packages which have no version
recognizable, or a version which doesn't match the module version database,
or, more recently seen, code that caused CPAN.pm to fail.

-- 
<URL:mailto:lvirden@cas.org> Quote: In heaven, there is no panic,
<*> O- <URL:http://www.teraform.com/%7Elvirden/> only planning.
Unless explicitly stated to the contrary, nothing in this posting
should be construed as representing my employer's opinions.


------------------------------

Date: 22 Jul 1998 03:19:17 GMT
From: snowhare@devilbunnies.org (Snowhare)
Subject: Re: Perl Beautifier Home Page
Message-Id: <6p3lnl$l7f$1@supernews.com>



Nothing above this line is part of the signed message.

In article <m3d8b0pnox.fsf@windlord.Stanford.EDU>,
Russ Allbery  <rra@stanford.edu> wrote:
>Snowhare <snowhare@devilbunnies.org> writes:
>
>> Oh?
>
>[snipped code to generate a list of dates]
>
>> That is five levels including the surrounding method I yanked it from.
>> Six if you count the 'if's in the innermost loop.  And yes - I *meant*
>> to use 'gt' and 'lt' in this context rather than '>' and '<' in the
>> innermost loop.
>
>Yeah, I see that.  Interesting code, although I hope you didn't use it
>across the year 1900 since the algorithm for detecting leap years is
>flawed. 

In context, I never need to worry about a date before 1997.
And if someone is still running this code in 102 years, they deserve
what they get. It's development code anyhow - still being written 
(and in fact the code fragment had significant bugs quite apart from
the leap year code that I had to fix).

Ah, hell. You've made me feel guilty.... Ok, I fixed it. Now it 
will work correctly for any date since the Gregorian calendar
was adopted. :)

> Without knowledge more of the surrounding structure to see if the
> globals that you have there really need to be globals I can't be sure this
>would be easy, but I'd personally usually write a sub that generated the
>list of dates, thus pulling that section out of the while loop, which
>would coincidentally reduce the number of levels to four.  (I wouldn't
>count the internal if statements, no.)

Hmmm...

>I honestly find the for loops and the adding of zeroes and then doing
>string comparisons slightly inelegant and would probably find a different
>algorithm for doing the same thing, but that's just personal taste.

Feel free to suggest one. :) Honestly, the problem of generating
every date in a year pretty much requires something like this 
somewhere. If you wanted to hide it, you could stuff it in an
array after you built a single leap year calendar and a single
non-leap year calendar. But that generation code would have the 
loops as well. I suppose you could put a loop around a call to
'gmtime' and add 86400 seconds each time around the loop if you 
were _really_ determined to avoid the nesting. But I really
don't think that qualifies as 'elegant'. :)

>The only line you had over 80 colums was:
>
>next if (($date_string lt $starting_date) || ($date_string gt $ending_date));
>
>which I would have written as:
>
>        next if $date_string lt $starting_date;
>        next if $date_string gt $ending_date;
>
>anyway just because I find that easier to read than the maze of 
>parens and having both conditions on the same line.  I'm fairly sure 
>the speed difference is negligible, although one could benchmark.

I tested it. It _is_ a negligible difference. There were some
other optimizations relating to the day of week computation
that were significant wins. Performance here really is an
issue because these routines are sometimes called upon to
generate several years worth of dates for a CGI in real time:
Seconds matter.

>And I'm not a big fan of long variable names; variable names rarely i
>have to be that long to make sense.

Like Lincoln said - they need to be long enough to reach the ground. I
don't gratuitiously make long variable names, but neither do I flinch
at one if it makes the code clearer.

Benjamin Franz


Version: 2.6.2

iQCVAwUBNbVgaujpikN3V52xAQHC6AP+OeoiI1uzw+2MhpToD8/IydGgMSUnqqKB
dnyNpVgZiI3mEPPSNt26rX/NKctda1NAZ01YMP5csXFfQoFALSpayP5I3Gl/qhEW
GP475HVIp3SkqTQxL9mGRnsi/CGsxabF9bX9of79u3hu3hkO+z2dUOJtZd6DuBNf
n3INifwxt2c=
=bQM2
-----END PGP SIGNATURE-----


------------------------------

Date: 21 Jul 1998 20:36:14 -0700
From: Russ Allbery <rra@stanford.edu>
Subject: Re: Perl Beautifier Home Page
Message-Id: <m3n2a2ftg1.fsf@windlord.Stanford.EDU>

Snowhare <snowhare@devilbunnies.org> writes:

> Feel free to suggest one. :) Honestly, the problem of generating every
> date in a year pretty much requires something like this somewhere. If
> you wanted to hide it, you could stuff it in an array after you built a
> single leap year calendar and a single non-leap year calendar. But that
> generation code would have the loops as well. I suppose you could put a
> loop around a call to 'gmtime' and add 86400 seconds each time around
> the loop if you were _really_ determined to avoid the nesting. But I
> really don't think that qualifies as 'elegant'. :)

Oh, agreed.  :)  But generating every date in a year only inherently
requires a two-level loop (month and day), which makes me think that
another algorithm probably exists.  But I'm not a big one for "fixing"
already working code when I can refrain.  ;)

I'm not saying that there's *never* a reason to write deeply-nested code.
There are certainly algorithms that inherently require traversing an
N-dimensional space where N > 4, and that's going to require a loop more
than four levels deep.  I'm just suspicious of it for most applications,
because normally deeply-nested code is caused by if statements, not loops,
and is a sign that something should be generalized and yanked out into a
sub.

I, of course, am not nearly as good about doing this as I should be.

-- 
#!/usr/bin/perl -- Russ Allbery, Just Another Perl Hacker
$^=q;@!>~|{>krw>yn{u<$$<[~||<Juukn{=,<S~|}<Jwx}qn{<Yn{u<Qjltn{ > 0gFzD gD,
 00Fz, 0,,( 0hF 0g)F/=, 0> "L$/GEIFewe{,$/ 0C$~> "@=,m,|,(e 0.), 01,pnn,y{
rw} >;,$0=q,$,,($_=$^)=~y,$/ C-~><@=\n\r,-~$:-u/ #y,d,s,(\$.),$1,gee,print


------------------------------

Date: Tue, 21 Jul 1998 20:18:59 -0700
From: shane <shane@baylinks.com>
Subject: perl executable for win95
Message-Id: <35B55A23.DD756549@baylinks.com>

Hello,

Could somebody provide a pointer to a
download for an executable for win95?

If such a thing exists...

I tried the IBM site and they have a link
but it only produces a 404 message.


Thanks,
-- 
Shane 
_______________________________________________
http://www.baylinks.com/~gandoff1/sc/front.html


------------------------------

Date: Wed, 22 Jul 1998 00:03:20 -0400
From: rjk@coos.dartmouth.edu (Ronald J Kimball)
Subject: Re: print FIC  :  An easy question !
Message-Id: <1dcji6r.kek6849r4z6eN@bay1-314.quincy.ziplink.net>

[posted and mailed]

delta <delta@netpage.tm.fr> wrote:

> I send a texte line in a file width the following "script":
> 
> print FIC "$in{'fond1'}" if $in{'fond1'} =~ m/\S/;
> 
> It's OK, I get my texte line, but if :
> fond1=I love comp.lang.perl.misc
> 
> I would like that print in my file :
> "I love comp.lang.perl.misc"
> 
> Here, it is the  " " that I would like automatically add to my line text

If you want to include quotes, you need to specify them within the
string.  Here is one way of doing that:

print FIC "\"$in{'fond1'}\"" if $in{'fond1'} =~ m/\S/;

-- 
 _ / '  _      /         - aka -         rjk@coos.dartmouth.edu
( /)//)//)(//)/(     Ronald J Kimball      chipmunk@m-net.arbornet.org
    /                                  http://www.ziplink.net/~rjk/
        "It's funny 'cause it's true ... and vice versa."


------------------------------

Date: Wed, 22 Jul 1998 00:03:21 -0400
From: rjk@coos.dartmouth.edu (Ronald J Kimball)
Subject: Re: Reading in an email message into a Perl program
Message-Id: <1dcjia9.t9t5v94i8a27N@bay1-314.quincy.ziplink.net>

- <root.noharvest.\@not_even\here.com> wrote:

> rjk@coos.dartmouth.edu (Ronald J Kimball) Said this:
> 
> >
> >It still doesn't quite work; you didn't address the bug I pointed out.
> >
> >For multiline headers all lines after the first are concatenated onto
> >$fields{''}.
> 
> But considering the use of this script, it isn't a bug.  If I don't
> want those headers, how can it be a bug that it doesn't grab them.....

If it handled multiline headers properly, it wouldn't be a bug.  If it
just ignored multiline headers, it wouldn't be a bug.  But since it
tries to deal with multiline headers and does so improperly, it is a
bug.  :-)
 
> No seriously, in "mail filtering" use, there is only a few reasons to
> want to capture any multi-line headers (or headers that appear more
> than once, as in Received).  For most purposes, it's not necessary,
> therefore it's not a bug that it misses that data.

Since the original poster's intended use may not be the same as your
intended use, it probably would have been better to include this
disclaimer when you first posted the code.

(Instead of writing, for example, "The below code will do everything you
need".)

-- 
 _ / '  _      /         - aka -         rjk@coos.dartmouth.edu
( /)//)//)(//)/(     Ronald J Kimball      chipmunk@m-net.arbornet.org
    /                                  http://www.ziplink.net/~rjk/
        "It's funny 'cause it's true ... and vice versa."


------------------------------

Date: Tue, 21 Jul 1998 23:18:53 -0400
From: Chris Mason <cmason@ros.res.cmu.edu>
Subject: Re: regexp question
Message-Id: <35B55A0E.961482E0@ros.res.cmu.edu>

[courtesy CC to original poster]

Tim Gray wrote:

> Why doesn't this expression
> m/<font.*?\s(SIZE=.*?)[>\s]/

Well that appears to work to me:

print "true" if ("<font COLOR=\"#006600\" SIZE=\"+1\">" =~ m/<font.*?\s(SIZE=.*?)[>\s]/);

> true

If you're dealing with HTML tags, you probably want to be case insensitive
by adding the i flag to the regexp:

 m/<font.*?\s(SIZE=.*?)[>\s]/i

> match this string?
> <font COLOR="#006600" SIZE="+1">
> 
> I am trying to write a one-liner that will go through and remove all
> the relative font sizes from a web site.  Any help is appreciated.

Maybe something like:

s/(<font\s.*?)size=.*?(>|(\s.*?>))/$1$2/ig

Might help you out...

-c

-- 
[ Chris Mason <cmason@cmu.edu> <cmason@imove.org> http://ros.res.cmu.edu/ ]
[ "Don't you see?! We're actors--we're the opposite of people!" -Stoppard ]


------------------------------

Date: 21 Jul 1998 21:50:13 -0400
From: mjd@op.net (Mark-Jason Dominus)
Subject: Re: Sorting Lists of Lists
Message-Id: <6p3ggl$598$1@monet.op.net>
Keywords: cereal feldspar kid vociferous


In article <35b4d3eb.87227264@news.vnet.net>,  <bhoyle@huntersville.org> wrote:
>The final text file needs to look like this:
>
>field1|field2|field3|34.2|23.1|2.4|3
>field1|field2|field3|48.3|12.2|9.8|4
>field1|field2|field3|27.8|32.9|6.7|2
>field1|field2|field3|16.3|45.8|5.1|1
>
>The last field is the rank based on the fourth field.
>
>Any ideas would be greatly appreciated. I have used $a <=> $b, but it
>only sorts horizontally, and not vertically.


Maybe you need something like

        @array = sort { $a 
                         ^
                         |
                         v 
                        $b } @array;



------------------------------

Date: Tue, 21 Jul 1998 21:22:03 -0400
From: Zach Malchano <zjm@fast-inc.com>
Subject: Strange problem....
Message-Id: <35B53EBB.6CC3D098@fast-inc.com>

I'm having a weird problem w/ a sperl program. The program takes some
CGI info passed to it, and is suppose to call the system program finger.
The error i get follows:

[21/Jul/1998:21:18:19] failure: for host sc248.wpmedia.net trying to GET
/cgi-bin/check.cgi, cgi-parse-output reports: the CGI program
/usr/web/servers/test/cgi-bin/check.cgi did not produce a valid header
(program terminated without a valid CGI header. Check for core dump or
other abnormal termination)

The program is the following:

#!/usr/bin/sperl

use ACGI::Cgi;
use Shell qw(finger);

my $cgi = new ACGI::Cgi();
my %data = $cgi->get_cgi_input();

$ENV{PATH} = "/bin:/usr/bin";
$user = $data{'user'};

if ($user =~ /^([-\@\w.]+)$/)  {
        $user = $1;
        $finger = finger("-m", "$1")";
        print "Content-type: text/html\n\n";
        print "<html><head><title>Checking username</title></head>";
        print "<body><p>".$finger."</p>";
        print "</body></html>";


} else {
die "Error!!! $!";
}

The cgi portion of the program is known to work, but i can't get around
the perlsec measures (or at least i think this is my problem).

Zach Malchano


------------------------------

Date: Wed, 22 Jul 1998 00:03:22 -0400
From: rjk@coos.dartmouth.edu (Ronald J Kimball)
Subject: Re: Using splice with for
Message-Id: <1dcjj5f.183l7uw15eb8f3N@bay1-314.quincy.ziplink.net>

Matt Knecht <hex@voicenet.com> wrote:

> This works for what I need, but, this seems like a very non-Perlian way
> to go about getting what I need.  I've considered using: 
> 
> @array = grep { $_ ne 'condition' } @array;
> 
> But that seems excessive.

Why is that excessive?  Isn't that exactly what you want to do?  Isn't
that exactly what grep is meant to be used for?

*boggle*

-- 
 _ / '  _      /         - aka -         rjk@coos.dartmouth.edu
( /)//)//)(//)/(     Ronald J Kimball      chipmunk@m-net.arbornet.org
    /                                  http://www.ziplink.net/~rjk/
        "It's funny 'cause it's true ... and vice versa."


------------------------------

Date: 22 Jul 1998 01:11:43 GMT
From: lvirden@cas.org
Subject: Re: Web Components
Message-Id: <6p3e8f$f1h$1@srv38s4u.cas.org>


:   I've seen calls to boycott Amazon in the past, but I had not seen

good grief - I've seen similar postings pointing to Barnes and Nobel,
Computer Literacy, etc.

Was there something in the header that pointed specifically to originating
from an employee of Amazon?  If not, then why in the world would someone
boycott them because an author pointed to an amazon book URL?  Seems like
a Barnes and Nobel employee might benefit from such a boycott, or even
from making a posting which resulted in such a boycott...
-- 
<URL:mailto:lvirden@cas.org> Quote: In heaven, there is no panic,
<*> O- <URL:http://www.teraform.com/%7Elvirden/> only planning.
Unless explicitly stated to the contrary, nothing in this posting
should be construed as representing my employer's opinions.


------------------------------

Date: 21 Jul 1998 23:52:23 -0400
From: Uri Guttman <uri@sysarch.com>
Subject: Re: What is awk better at than perl? (Larry quote)
Message-Id: <x767gqmtjc.fsf@sysarch.com>

>>>>> "KP" == Kent Perrier <kperrier@blkbox.com> writes:

  KP> Uri Guttman <uri@sysarch.com> writes:
  >> 
  >> and anyhow ilya (IIRC) has said that this feature will be in 5.005, so
  >> it is moot about how deep perl will go with $/ being a regex. it will go
  >> as deep as you tell it to.
  >> 

  KP> Look at Ilya's post again.  It said NOT in 5.005, but it will be in some
  KP> future release of perl.


well i did qualify it with IIRC, so obviously i didn't :-(

uri

-- 
Uri Guttman  -----------------  SYStems ARCHitecture and Software Engineering
Perl Hacker for Hire  ----------------------  Perl, Internet, UNIX Consulting
uri@sysarch.com  ------------------------------------  http://www.sysarch.com
The Best Search Engine on the Net -------------  http://www.northernlight.com


------------------------------

Date: 12 Jul 98 21:33:47 GMT (Last modified)
From: Perl-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin) 
Subject: Special: Digest Administrivia (Last modified: 12 Mar 98)
Message-Id: <null>


Administrivia:

Special notice: in a few days, the new group comp.lang.perl.moderated
should be formed. I would rather not support two different groups, and I
know of no other plans to create a digested moderated group. This leaves
me with two options: 1) keep on with this group 2) change to the
moderated one.

If you have opinions on this, send them to
perl-users-request@ruby.oce.orst.edu. 


The Perl-Users Digest is a retransmission of the USENET newsgroup
comp.lang.perl.misc.  For subscription or unsubscription requests, send
the single line:

	subscribe perl-users
or:
	unsubscribe perl-users

to almanac@ruby.oce.orst.edu.  

To submit articles to comp.lang.perl.misc (and this Digest), send your
article to perl-users@ruby.oce.orst.edu.

To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.

To request back copies (available for a week or so), send your request
to almanac@ruby.oce.orst.edu with the command "send perl-users x.y",
where x is the volume number and y is the issue number.

The Meta-FAQ, an article containing information about the FAQ, is
available by requesting "send perl-users meta-faq". The real FAQ, as it
appeared last in the newsgroup, can be retrieved with the request "send
perl-users FAQ". Due to their sizes, neither the Meta-FAQ nor the FAQ
are included in the digest.

The "mini-FAQ", which is an updated version of the Meta-FAQ, is
available by requesting "send perl-users mini-faq". It appears twice
weekly in the group, but is not distributed in the digest.

For other requests pertaining to the digest, send mail to
perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
sending perl questions to the -request address, I don't have time to
answer them even if I did know the answer.


------------------------------
End of Perl-Users Digest V8 Issue 3220
**************************************

home help back first fref pref prev next nref lref last post