[22668] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 4889 Volume: 10

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Thu Apr 24 18:06:15 2003

Date: Thu, 24 Apr 2003 15:05:09 -0700 (PDT)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)

Perl-Users Digest           Thu, 24 Apr 2003     Volume: 10 Number: 4889

Today's topics:
    Re: ActivePerl alarm() on Windows <bobx@linuxmail.org>
        c.l.p.moderated eyrie.org list problem? (Don Hammond)
    Re: c.l.p.moderated eyrie.org list problem? <uri@stemsystems.com>
    Re: c.l.p.moderated eyrie.org list problem? (Don Hammond)
    Re: c.l.p.moderated eyrie.org list problem? <uri@stemsystems.com>
    Re: changing the date <bart.lateur@pandora.be>
    Re: Distribute a perl script (Patrice)
    Re: Distribute a perl script (Patrice)
    Re: exclusive lock - bad file number <grazz@pobox.com>
    Re: ftp script <rrunner@san.rr.com>
    Re: Little help <jboes@nexcerpt.com>
        Net::FTP delete problem <huuhaa@kastema.to>
        Netscape Enterprise 3.5 and flock <noneya@biz.com>
        Perl natural language design roots (was Re: Tough quest <ethan@draupnir.gso.saic.com>
    Re: Regex greediness question (Anno Siegel)
    Re: Regex greediness question <noreply@gunnar.cc>
    Re: Regex greediness question (Anno Siegel)
    Re: Regex greediness question <noreply@gunnar.cc>
        Replacing '@' in Strings (Matt Krawczyk)
    Re: Replacing '@' in Strings <tassilo.parseval@rwth-aachen.de>
    Re: Replacing '@' in Strings (Tad McClellan)
    Re: Still Stumped (Tad McClellan)
    Re: Tough question for the guru's; Grep Once, Awk Twice <tassilo.parseval@rwth-aachen.de>
    Re: Tough question for the guru's; Grep Once, Awk Twice (Tad McClellan)
    Re: Undefining Aggregates <mordor@fly.srk.fer.hr>
    Re: Undefining Aggregates <uri@stemsystems.com>
    Re: Undefining Aggregates (Anno Siegel)
    Re: Undefining Aggregates (Jay Tilton)
        WEB server testing results here urbctt334@mail.ru
        {newbie} sorting  of files <santyspamsharma@hotmail.com>
    Re: {newbie} sorting  of files <uri@stemsystems.com>
    Re: {newbie} sorting  of files <tassilo.parseval@rwth-aachen.de>
    Re: {newbie} sorting  of files <santyspamsharma@hotmail.com>
    Re: {newbie} sorting  of files (Tad McClellan)
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Thu, 24 Apr 2003 20:32:13 GMT
From: "Bob X" <bobx@linuxmail.org>
Subject: Re: ActivePerl alarm() on Windows
Message-Id: <hRXpa.4302$hT2.2294317@news2.news.adelphia.net>

Yehuda Berlinger" <jon@actcom.co.il> wrote in message
news:Xns936795CC4CFCEjonactcomcoil@192.114.47.10...
> I am using ActivePerl alarm() on a Win 98 box. The docs seem to say that
> neither alarm() or POSIX::alarm() work, but they do work, at least, they
do
> for me. What they don't do is return the time remining on the previous
> alarm().
>
> When set to a low enough number, the alarm does trip. When set to '100',
> the script should give me an output of '98' or so, instead it gives me
'0'.
> Any clues?
>
The docs say it doesn't work on Windows...why are you trying to make it do
so?




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

Date: 24 Apr 2003 15:39:35 -0500
From: throwaway-gX7yGGyqa5bC@tradersdata.com (Don Hammond)
Subject: c.l.p.moderated eyrie.org list problem?
Message-Id: <3ea83d77$1@btitelecom.net>

Sorry if this is not the place.  I get c.l.p.moderated via
lists.eyrie.org because my newsfeed doesn't carry it.  Starting
sometime yesterday my mail server stopped accepting the list
messages because it can't resolve lists.eyrie.org.  I can't
do it from the command-line either - with or without lists.

Is anyone else aware of a dns problem with eyrie.org?  If not,
does anyone have a contact outside of eyrie.org that might be
able to help.  If the problem is mine, I'd like to at least
unsubscribe from the list until it's fixed.  Unfortunately I
can't even do that since I can't reach them.  I'm not worried
about me.  I just don't want to be bouncing them, especially
if it's my problem.

Thanks for any ideas/info.
 
-- 
Email address in From: header is valid  * but only for a couple of days *



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

Date: Thu, 24 Apr 2003 19:51:07 GMT
From: Uri Guttman <uri@stemsystems.com>
Subject: Re: c.l.p.moderated eyrie.org list problem?
Message-Id: <x74r4nn07o.fsf@mail.sysarch.com>

>>>>> "DH" == Don Hammond <throwaway-gX7yGGyqa5bC@tradersdata.com> writes:

  DH> Sorry if this is not the place.  I get c.l.p.moderated via
  DH> lists.eyrie.org because my newsfeed doesn't carry it.  Starting
  DH> sometime yesterday my mail server stopped accepting the list
  DH> messages because it can't resolve lists.eyrie.org.  I can't
  DH> do it from the command-line either - with or without lists.

they announced there that eyrie.org is down for a few days because of
dns issues. so it is well known and should be resolved in a couple of
more days.

uri

-- 
Uri Guttman  ------  uri@stemsystems.com  -------- http://www.stemsystems.com
--Perl Consulting, Stem Development, Systems Architecture, Design and Coding-
Search or Offer Perl Jobs  ----------------------------  http://jobs.perl.org


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

Date: 24 Apr 2003 16:04:46 -0500
From: throwaway-gX7yGGyqa5bC@tradersdata.com (Don Hammond)
Subject: Re: c.l.p.moderated eyrie.org list problem?
Message-Id: <3ea8435e$1@btitelecom.net>

Uri Guttman <uri@stemsystems.com> writes:
>>>>>> "DH" == Don Hammond <throwaway-gX7yGGyqa5bC@tradersdata.com> writes:
> 
>   DH> Sorry if this is not the place.  I get c.l.p.moderated via
>   DH> lists.eyrie.org because my newsfeed doesn't carry it.  Starting
>   DH> sometime yesterday my mail server stopped accepting the list
>   DH> messages because it can't resolve lists.eyrie.org.  I can't
>   DH> do it from the command-line either - with or without lists.
> 
> they announced there that eyrie.org is down for a few days because of
> dns issues. so it is well known and should be resolved in a couple of
> more days.

Thanks very much Uri.  Thanks also for the courtesy copy.  I couldn't
find anything, probably because I can't get to c.l.p.moderated or
eyrie.org.  I'm glad it's not my fault and appreciate you letting me
know.

-- 
Email address in From: header is valid  * but only for a couple of days *



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

Date: Thu, 24 Apr 2003 20:10:17 GMT
From: Uri Guttman <uri@stemsystems.com>
Subject: Re: c.l.p.moderated eyrie.org list problem?
Message-Id: <x7vfx3lkra.fsf@mail.sysarch.com>

>>>>> "DH" == Don Hammond <throwaway-gX7yGGyqa5bC@tradersdata.com> writes:

  DH> Thanks very much Uri.  Thanks also for the courtesy copy.  I couldn't
  DH> find anything, probably because I can't get to c.l.p.moderated or
  DH> eyrie.org.  I'm glad it's not my fault and appreciate you letting me
  DH> know.

not that i would recommend it but google carries it. so at least you
could read it there if you don't want to use their posting interface.

how anyone can use the web for mail and news is beyond me.  i need my
all my emacs powers so i can edit stuff properly.  :)

uri

-- 
Uri Guttman  ------  uri@stemsystems.com  -------- http://www.stemsystems.com
--Perl Consulting, Stem Development, Systems Architecture, Design and Coding-
Search or Offer Perl Jobs  ----------------------------  http://jobs.perl.org


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

Date: Thu, 24 Apr 2003 19:32:54 GMT
From: Bart Lateur <bart.lateur@pandora.be>
Subject: Re: changing the date
Message-Id: <baegav84nlr6k6a7hl4gn5b63uk8ch048a@4ax.com>

Mario542 wrote:

>when someone enters a date into the web for it look like- 4.14.03. How
>do I fromat this so it can be changed to the following date- 4.15.03??

Convert the date string to an internal represetnation of time, for
example using Time::Local (the inverse of localtime()). Add 1 day, or
24*60*60 seconds. Convert it back to a date string with localtime(). Or
with gmtime(), which is less daylight-saving-time-error-prone.

Like this:

	$date = '4.14.03';
	
	use Time::Local;
	my($m, $d, $y) = split /\./, $date;
	$m--;
	$y += 100 if $y < 50;
	my $time = timegm(0, 0, 12, $d, $m, $y);
	my @nextday  = gmtime($time + 24*60*60);
	my $nextday = sprintf "%d.%02d.%02d", 
		$nextday[4]+1, $nextday[3], $nextday[5] % 100;
	print "The day after $date is $nextday\n";


There are some date manipulation modules on CPAN, which may take care of
the parsing for you, as well as the calculations. I'd think of
Date::Manip or Date::Calc. See also <http://datetime.perl.org>, and the
article here: <http://www.perl.com/pub/a/2003/03/13/datetime.html>.


-- 
	Bart.


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

Date: 24 Apr 2003 12:24:06 -0700
From: google@ppatrice.ovh.org (Patrice)
Subject: Re: Distribute a perl script
Message-Id: <da445f9c.0304241124.7161db4b@posting.google.com>

tadmc@augustmail.com (Tad McClellan) wrote in message news:<slrnbafl0k.2rr.tadmc@magna.augustmail.com>...
> Simon Andrews <simon.andrews@bbsrc.ac.uk> wrote:
> > Patrice wrote:
>  
> >> There's a
> >> high probability they have a windows machine, but I'd like to provide
> >> something for Linux as well.
> >> My script is using two modules : XML::LibXML and XML::LibXSLT
>                                     ^^^^^^^^^^^     ^^^^^^^^^^^^
> 
> Those are XS modules.

So, what can I do ? Is it possible to have them into a standalone exe
?
I think I need the libxml and libxslt. I grabbed the binaries for
win32 (from http://www.zlatkovic.com/projects/libxml/binaries.html)
but I don't know what to do next and I couldn't get perlcc compile my
script. The error is :
Can't locate loadable object for module XML::LibXML::Common in @INC
(@INC contai
ns: ...)

Thanks for your help.


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

Date: 24 Apr 2003 12:25:54 -0700
From: google@ppatrice.ovh.org (Patrice)
Subject: Re: Distribute a perl script
Message-Id: <da445f9c.0304241125.770de450@posting.google.com>

botfood@yahoo.com (dan baker) wrote in message news:<13685ef8.0304240646.308ac8c3@posting.google.com>...

> or you could build a little web-based test harness/front end interface
> and install it in a website they can get to. Could also have links
> that would show the source in addition to execution....

Could have be a good idea, a little bit late though :(
Thanks anyway.


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

Date: Thu, 24 Apr 2003 18:50:14 GMT
From: Steve Grazzini <grazz@pobox.com>
Subject: Re: exclusive lock - bad file number
Message-Id: <GlWpa.24957$J17.17469@twister.nyc.rr.com>

uNConVeNtiOnAL <tomcat@visi.com> wrote:
> I get this error
> 
> can't get exclusive lock on /home/mydir/members.txt.sem:
> Bad file number at my.cgi line 54.
> 
> when I run this code:
> 
> # first, get an exclusive lock on the queue semaphore file.
>     my $lockfile = $Socalsail::Register::queue_file_semaphore;
>     open QUEUE_LOCK, "> $lockfile"
>         or die "can't open $lockfile for writing: $!";
>     flock QUEUE_LOCK, LOCK_EX                         <== line 54!!!
>         or die "can't get exclusive lock on $lockfile: $!";
> 
> Anybody recognize what is wrong?

Probably you forgot to

    use strict;
    use Fcntl qw/:flock/;

HTH
-- 
Steve


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

Date: Thu, 24 Apr 2003 20:47:28 GMT
From: "Danny" <rrunner@san.rr.com>
Subject: Re: ftp script
Message-Id: <A3Ypa.1303$Eu1.57955@twister.socal.rr.com>

THANKS THIS IS A LOT OF HELP.


"D'oh" <D'oh@a.deer> wrote in message news:3EA7DA91.ABFF028E@a.deer...
> Danny wrote:
> >
> > I do not know how to write scripts so I am asking for some help. I need
to
> > creat a script that will help me ftp a firmware to over 200 locations. I
> > want it to do it using linux. Is there a way to do this and can anyone
help
> > me with some direction?
> >
>
> Here is some UNTESTED code you can dabble with.  It expects the file/s you
> want uploaded to be in the current directory of this script.  It also
expects
> a file called "multiput.db" to exist in the current directory.
>
> The format of multiput.db is
>   location|username|password|path|filename|filetype
>
> where location is the ftp site (eg ftp.abc.com)
>       username is obvious
>       password is obvious
>       path is the remote site path (eg /usr/local/var)
>       filename is the name of the file to be uploaded
>       filetype is the file type.  A=Ascii, B=Binary
>
> example:
>
> ftp.abc.com|danny|1234|/usr/local/var|file|A
> ftp.zoos.com|danny|9999|/usr/local/bin|hipo_file|B
> ftp.catz.com|danny|abc123|/usr/local/apache/htdocs/cgi-bin|counter.cgi|B
> etc, etc, whatever...
>
> Hope it works ok.  Test it out with just a couple of entries in the
> multiput.db file.
>
>   Good luck.
>
> *****Code starts here
>
> #!/bin/perl
> use warnings;
> use strict;
> use Net::FTP;
>
> my ($site, $username, $password, $path, $filename, $filetype);
> my $infile = "multiput.db";
> my $ftp;
>
> my $default_username="anonymous";
> my $default_password="guest";
>
> open(INFILE, "< $infile") or die("INFILE: $!");
> while(<INFILE>) {
>   chomp;
>   ($site, $username, $password, $path, $filename, $filetype) = split(/\|/,
$_);
>   if (!defined($username)) { $username = $default_username; };
>   if (!defined($password)) { $password = $default_password; };
>   $ftp=Net::FTP->new($site, Timeout=>120) or die("CONNECT $site: $!");
>   $ftp->login($username, $password) or die("LOGIN: $!");
>   if ($filetype eq "A") {
>     $ftp->ascii();
>   }
>   elsif {
>     $ftp->binary();
>   }
>   $ftp->cwd($path) or die("CD $path: $!");
>   $ftp->put($filename) or print("PUT $site $path $file: $!");
>   $ftp->close;
> }
> close(INFILE);




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

Date: Thu, 24 Apr 2003 18:33:38 GMT
From: Jeff Boes <jboes@nexcerpt.com>
Subject: Re: Little help
Message-Id: <8e72571732022683b40dadd526c51eba@TeraNews>

On Wed, 23 Apr 2003 19:11:56 -0400, Erik Dokic wrote:

 ... a message with the title "Little help"

 ... which is exactly what you'll get if you don't use more descriptive
subject headers!  I'd have chosen any of these in preference:

Script to run xscreensaver
X11 script

Neither is perfect, but either are better than yours. 

-- 
Jeff Boes                                      vox 269.226.9550 ext 24
Database Engineer                                     fax 269.349.9076
Nexcerpt, Inc.                                 http://www.nexcerpt.com
           ...Nexcerpt... Extend your Expertise


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

Date: Thu, 24 Apr 2003 21:34:47 +0300
From: "Arde" <huuhaa@kastema.to>
Subject: Net::FTP delete problem
Message-Id: <3ea82e48$1@news.dnainternet.net>

Hi!
I've got a weird problem when I'm trying to delete a file with
$ftp->delete($_); in my script.
Deleting a file takes forever and it seems to fail (if I use
'$ftp->delete($_) or die;' the script dies) but the file is deleted anyway.
Is there an alternative to 'delete'? I tried to use 'quote' with delete +
file as command but that doesn't work. Please provide a real life example
how to solve this problem. Thanks.

Regards,
Arde




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

Date: Thu, 24 Apr 2003 17:10:05 -0400
From: "h8dnwld" <noneya@biz.com>
Subject: Netscape Enterprise 3.5 and flock
Message-Id: <pan.2003.04.24.21.10.02.322265@biz.com>

I have a client that has a unpatched netscape enterprise 3.5 intranet web
server on novell 4.11.  Upgrading or moving them to something better is
not a option.  Can anyone tell me what the equivalent to Fcntl ':flock';
so I can gain a exclusive lock on a file that 15-20 users are trying to
update?  I have no documentation with the server nor have I had any luck
on the Netscape enterprise web site.  Any direction would be appreciated.

m


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

Date: 24 Apr 2003 14:08:08 -0700
From: Ethan Brown <ethan@draupnir.gso.saic.com>
Subject: Perl natural language design roots (was Re: Tough question for the guru's; Grep Once, Awk Twice (or more))
Message-Id: <vrel3rbo3r.fsf_-_@draupnir.gso.saic.com>

>>>>> "Tad" == Tad McClellan <tadmc@augustmail.com> writes:

    Tad> Ethan Brown <ethan@draupnir.gso.saic.com> wrote:
    >>>>>>> "Tad" == Tad McClellan <tadmc@augustmail.com> writes:

    >> Do you know where Larry came up with the idea?
    Tad> Get it from the camel's mouth:

    Tad>    http://wrww.wall.org/~larry/natural.html

Thanks.  Interesting read.  I can see why Perl turned out different
from other languages.  It uses natural language concepts that other language 
designers most likely went out of their way to avoid.  I like how Larry
points out that one doesn't have be a (natural) language expert to
make effective use of the language, and how Perl is the same way.


--Ethan


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

Date: 24 Apr 2003 18:38:16 GMT
From: anno4000@lublin.zrz.tu-berlin.de (Anno Siegel)
Subject: Re: Regex greediness question
Message-Id: <b89auo$pp$1@mamenchi.zrz.TU-Berlin.DE>

Gunnar Hjalmarsson  <noreply@gunnar.cc> wrote in comp.lang.perl.misc:
> Tman wrote:
> > C:\Temp>perl -de 1
> > .....
> >   DB<1> p "aaaaaabaaaaa" =~ /a(.*?b.*?)a/
> > aaaaab
> > 
> > I was hoping to capture only "b" in the capture group.  By making
> > both of the quantifiers non-greedy, it seems that the man page for
> > perlre says that they will match the "minimum number of times
> > possible".  Well, this regex matches fine if both of the
> > quantifiers match _zero_ items.  But the leftmost one wants to
> > match more than the minimum.
> 
> perlre says also: "given a particular starting location". It starts
> with the *first* a it finds, and tries to match from that.
> 
> > Trvial example, yes, but it is reduced from a real-world problem.
> > (I am trying to match the <TABLE>..... </TABLE> element in a page
> > that contains a certain string, and only match that single table).
> 
> If that's what you intend to do, I don't think that your example
> string illustrates it. I mean, hopefully your HTML distinguishes
> between <TABLE> and </TABLE>...

Sure.  But if there are two or more tables in a file, the match will
span them all, from the first <table> to the last </table>.  That's
because of greediness, and it's wrong.  So the next approximation
makes the middle part non-greedy.  This seems to work, but only as
long as there are no nested tables.  If there are, a straightforward
regex doesn't cut it anymore.

> How about this:
> 
>      $html =~ s[(<table>.*?</table>)][
>          my $table = $1;
>          if ($table =~ /$string/) {
>              # do something
>          } else {
>              $table;
>          }
>      ]egi;

As noted, this will work only for non-nesting tables.  Also, I can't say
I like the way you smuggle essential code into execution via s///e, as it
were.  It's kind of cute, but in quality code I'd avoid it.

If this is only about matching tables, I'd use Text::Balanced, which
should parse out nest-able structures like this with no pain.  If more
HTML-processing is involved, there is no way around one of the HTML-parsing
modules.

Anno


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

Date: Thu, 24 Apr 2003 20:58:34 +0200
From: Gunnar Hjalmarsson <noreply@gunnar.cc>
Subject: Re: Regex greediness question
Message-Id: <b89c8l$7lm6o$1@ID-184292.news.dfncis.de>

Anno Siegel wrote:
> So the next approximation
> makes the middle part non-greedy.  This seems to work, but only as
> long as there are no nested tables.  If there are, a straightforward
> regex doesn't cut it anymore.

Let me add that I agree on that, of course. OP mentioned the real 
problem only casually, so we don't know what's the case.

> Gunnar Hjalmarsson  <noreply@gunnar.cc> wrote in comp.lang.perl.misc:
>>How about this:
>>
>>     $html =~ s[(<table>.*?</table>)][
>>         my $table = $1;
>>         if ($table =~ /$string/) {
>>             # do something
>>         } else {
>>             $table;
>>         }
>>     ]egi;
> 
> Also, I can't say I like the way you smuggle essential code into
> execution via s///e, as it were.  It's kind of cute, but in quality
> code I'd avoid it.

Hmm.. "Like"? Would be interesting if you could expand on that one, 
Anno. If there proves to be nested tables involved, making the use of 
some parsing module natural, I suppose that such a module would do a 
lot of stuff with *all* code (temporarily putting it into "chunks" 
etc.). What potential problem do you see with this kind of use of s///e ?

/ Gunnar

-- 
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl



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

Date: 24 Apr 2003 19:54:46 GMT
From: anno4000@lublin.zrz.tu-berlin.de (Anno Siegel)
Subject: Re: Regex greediness question
Message-Id: <b89fe6$3bn$1@mamenchi.zrz.TU-Berlin.DE>

Gunnar Hjalmarsson  <noreply@gunnar.cc> wrote in comp.lang.perl.misc:
> Anno Siegel wrote:
> > So the next approximation
> > makes the middle part non-greedy.  This seems to work, but only as
> > long as there are no nested tables.  If there are, a straightforward
> > regex doesn't cut it anymore.
> 
> Let me add that I agree on that, of course. OP mentioned the real 
> problem only casually, so we don't know what's the case.
> 
> > Gunnar Hjalmarsson  <noreply@gunnar.cc> wrote in comp.lang.perl.misc:
> >>How about this:
> >>
> >>     $html =~ s[(<table>.*?</table>)][
> >>         my $table = $1;
> >>         if ($table =~ /$string/) {
> >>             # do something
> >>         } else {
> >>             $table;
> >>         }
> >>     ]egi;
> > 
> > Also, I can't say I like the way you smuggle essential code into
> > execution via s///e, as it were.  It's kind of cute, but in quality
> > code I'd avoid it.
> 
> Hmm.. "Like"? Would be interesting if you could expand on that one, 
> Anno. If there proves to be nested tables involved, making the use of 
> some parsing module natural, I suppose that such a module would do a 
> lot of stuff with *all* code (temporarily putting it into "chunks" 
> etc.). What potential problem do you see with this kind of use of s///e ?

Tradition?  Readability?

Tradition has it that the code in s/// is something small, to compose
as string that you can't get with straight interpolation.  Sure, this
being Perl, you can fire up any program from s///, it's just a matter
of style.

What happens in your comment "# do something" is presumably the primary
purpose of (this part of) the program.  Executing it inside of a substitution
comes unexpected.  For instance, I'm not sure without looking it up what
the lexical scope of the code is. IOW, is "my $table = $1" in a block of its
own (I expect it is), or is it on the same lexical level as the surrounding
code?  Another thing is that, strictly speaking, what goes in the substi-
tution slot of s///e must be an expression (and return a value).  I expect
Perl wraps an invisible "do{}" around more than one statement.  That, again,
makes the use of "if ()" as a last statement shaky: "if" doesn't return
anything.  DWIMmer to the rescue...

Well, that's a lot of critique occasioned by an innocent little bit of
code (which actually works, to boot).  Anyway, to avoid the issues,
I'd code it along these lines:

    while ( $html =~ m[(<table>.*?</table>)]sg ) {
        my $table = $1;
        if ( ... ) {}
    }

Anno


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

Date: Thu, 24 Apr 2003 23:09:48 +0200
From: Gunnar Hjalmarsson <noreply@gunnar.cc>
Subject: Re: Regex greediness question
Message-Id: <b89juo$7jsms$1@ID-184292.news.dfncis.de>

Anno Siegel wrote:
> Gunnar Hjalmarsson  <noreply@gunnar.cc> wrote in comp.lang.perl.misc:
>>Anno Siegel wrote:
>>>Gunnar Hjalmarsson  <noreply@gunnar.cc> wrote in comp.lang.perl.misc:
>>>>How about this:
>>>>
>>>>    $html =~ s[(<table>.*?</table>)][
>>>>        my $table = $1;
>>>>        if ($table =~ /$string/) {
>>>>            # do something
>>>>        } else {
>>>>            $table;
>>>>        }
>>>>    ]egi;
>>>
>>>Also, I can't say I like the way you smuggle essential code into
>>>execution via s///e, as it were.  It's kind of cute, but in quality
>>>code I'd avoid it.
>>
>>Hmm.. "Like"? Would be interesting if you could expand on that one, 
>>Anno. If there proves to be nested tables involved, making the use of 
>>some parsing module natural, I suppose that such a module would do a 
>>lot of stuff with *all* code (temporarily putting it into "chunks" 
>>etc.). What potential problem do you see with this kind of use of s///e ?
> 
> Tradition?  Readability?
> 
> Tradition has it that the code in s/// is something small, to compose
> as string that you can't get with straight interpolation.  Sure, this
> being Perl, you can fire up any program from s///, it's just a matter
> of style.
> 
> What happens in your comment "# do something" is presumably the primary
> purpose of (this part of) the program.  Executing it inside of a substitution
> comes unexpected.  For instance, I'm not sure without looking it up what
> the lexical scope of the code is. IOW, is "my $table = $1" in a block of its
> own (I expect it is), or is it on the same lexical level as the surrounding
> code?  Another thing is that, strictly speaking, what goes in the substi-
> tution slot of s///e must be an expression (and return a value).  I expect
> Perl wraps an invisible "do{}" around more than one statement.  That, again,
> makes the use of "if ()" as a last statement shaky: "if" doesn't return
> anything.  DWIMmer to the rescue...
> 
> Well, that's a lot of critique occasioned by an innocent little bit of
> code (which actually works, to boot).  Anyway, to avoid the issues,
> I'd code it along these lines:
> 
>     while ( $html =~ m[(<table>.*?</table>)]sg ) {
>         my $table = $1;
>         if ( ... ) {}
>     }

Thanks for your comments; I see your points. A while loop is obviously 
more straight forward, provided that you don't want to change the 
value of $html. For some reason - don't ask me why ;-) - I assumed 
that OP wanted to do that.

/ Gunnar

-- 
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl



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

Date: 24 Apr 2003 13:51:27 -0700
From: goaliefight@evil-snowman.com (Matt Krawczyk)
Subject: Replacing '@' in Strings
Message-Id: <3e96fdb0.0304241251.6778d725@posting.google.com>

I've been trying for the past two hours or so to match and replace @
characters in email addresses with \@. The idea is to take a text file
full of email address (one on each line), and cycle through sending a
message to everyone on the list. Problem is, I can't for the life of
me figure out how to force the program to do that replace for me so
that when I try to use sendmail, it doesn't fail. Even attempting to
simply display the email address on-screen causes problems, and the
address gets cut in half with only part of it being displayed.

Example:

print("someuser@my-company.com","\n");

Is shown as...

someuser-company.com

 ...on the screen.

NOTE: "someuser\@my-company.com" works fine.

I've tried escaping the character, but it's not helping me at all, and
I'm starting to lose my mind. I've searched through both Perl books I
have here, as well as any online documentation that I can find, and
still nothing works. Any advice that might work would be greatly
appreciated.

Thanks in advance,
Matt


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

Date: 24 Apr 2003 21:17:41 GMT
From: "Tassilo v. Parseval" <tassilo.parseval@rwth-aachen.de>
Subject: Re: Replacing '@' in Strings
Message-Id: <b89k9l$b61$1@nets3.rz.RWTH-Aachen.DE>

Also sprach Matt Krawczyk:

> I've been trying for the past two hours or so to match and replace @
> characters in email addresses with \@. The idea is to take a text file
> full of email address (one on each line), and cycle through sending a
> message to everyone on the list. Problem is, I can't for the life of
> me figure out how to force the program to do that replace for me so
> that when I try to use sendmail, it doesn't fail. Even attempting to
> simply display the email address on-screen causes problems, and the
> address gets cut in half with only part of it being displayed.
> 
> Example:
> 
> print("someuser@my-company.com","\n");
> 
> Is shown as...
> 
> someuser-company.com
> 
> ...on the screen.
> 
> NOTE: "someuser\@my-company.com" works fine.
> 
> I've tried escaping the character, but it's not helping me at all, and
> I'm starting to lose my mind. I've searched through both Perl books I
> have here, as well as any online documentation that I can find, and
> still nothing works. Any advice that might work would be greatly
> appreciated.

'@' along with some other characters is special in double-quotish
context (this includes the right side of s///) and therefore needs to be
escaped with '\'. But from your post I understand that you read the
email adresses from a text file line-wise.  In such a case each line
(adequately chomp()ed) is stored in a variable and the @ is not special
when printing it. Is it perhaps possible that you try to replace '@'
in those variables with '\@'. You don't have to. You only have to care
about escaping when you are dealing with literals ("user\@host.com" is
one, but $var is not - it's a variable).

If that doesn't help, better post a short snippet of your code that
exhibits your problem.

Tassilo
-- 
$_=q#",}])!JAPH!qq(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({
pam{rekcahbus})(rekcah{lrePbus})(lreP{rehtonabus})!JAPH!qq(rehtona{tsuJbus#;
$_=reverse,s+(?<=sub).+q#q!'"qq.\t$&."'!#+sexisexiixesixeseg;y~\n~~dddd;eval


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

Date: Thu, 24 Apr 2003 16:53:56 -0500
From: tadmc@augustmail.com (Tad McClellan)
Subject: Re: Replacing '@' in Strings
Message-Id: <slrnbagn7j.3qo.tadmc@magna.augustmail.com>

Matt Krawczyk <goaliefight@evil-snowman.com> wrote:

> I've been trying for the past two hours or so to match and replace @
> characters in email addresses with \@. 


You likely do not need to replace @ characters in email addresses with \@...


> The idea is to take a text file
> full of email address (one on each line), and cycle through sending a
> message to everyone on the list. Problem is, I can't for the life of
> me figure out how to force the program to do that replace for me so
> that when I try to use sendmail, it doesn't fail. 


You appear to be confused about the distinction between code
and data. The at-sign may be special in code, it is not special
in data (such as when read from a file).


> Even attempting to
> simply display the email address on-screen causes problems, and the
> address gets cut in half with only part of it being displayed.
> 
> print("someuser@my-company.com","\n");

> Is shown as...
> 
> someuser-company.com


That is because the @my array contains no elements to interpolate,
so it interpolates as the empty string.

You should enable strict and warnings when developing Perl code!


> NOTE: "someuser\@my-company.com" works fine.


So does 'someuser@my-company.com', because single quotes do 
not interpolate.


> Any advice that might work would be greatly
> appreciated.


1) recognize when the at-sign is data, and when it is code.

2) if it is code that is being interpolated, either

      escape (backslash) the at-sign
   or
      change the code so that it is NOT being interpolated


-- 
    Tad McClellan                          SGML consulting
    tadmc@augustmail.com                   Perl programming
    Fort Worth, Texas


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

Date: Thu, 24 Apr 2003 16:20:40 -0500
From: tadmc@augustmail.com (Tad McClellan)
Subject: Re: Still Stumped
Message-Id: <slrnbagl98.3os.tadmc@magna.augustmail.com>

pooba53 <delautenschl@[nospam]wisc.edu> wrote:
> You need to layoff the caffeine, man.

> Jay Tilton wrote:
>> Stop top-posting replies, dammit.


*plonk*


-- 
    Tad McClellan                          SGML consulting
    tadmc@augustmail.com                   Perl programming
    Fort Worth, Texas


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

Date: 24 Apr 2003 18:31:34 GMT
From: "Tassilo v. Parseval" <tassilo.parseval@rwth-aachen.de>
Subject: Re: Tough question for the guru's; Grep Once, Awk Twice (or more)
Message-Id: <b89ai6$ud$1@nets3.rz.RWTH-Aachen.DE>

Also sprach Agrapha:

> helgi@decode.is (Helgi Briem) wrote in message news:<3ea7f329.1207773266@news.cis.dfn.de>...

>> perldoc -q duplicate
> 
> I must have an old build.  When I issue the command above I get this
> result:
> 
>> perldoc -q duplicate
> No documentation for perl FAQ keyword `duplicate' found
>>
> 
> my system is FreeBSD4.7 so I'm pretty sure it's just my build. Thats a
> good question. How do I ask Perl what version it is?

'perl -v'. As far as I know, FreeBSD 4.7 comes with 5.00303 (the version
prior to 5.6.0). Not sure when the FAQ in question was introduced.

Tassilo
-- 
$_=q#",}])!JAPH!qq(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({
pam{rekcahbus})(rekcah{lrePbus})(lreP{rehtonabus})!JAPH!qq(rehtona{tsuJbus#;
$_=reverse,s+(?<=sub).+q#q!'"qq.\t$&."'!#+sexisexiixesixeseg;y~\n~~dddd;eval


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

Date: Thu, 24 Apr 2003 15:26:52 -0500
From: tadmc@augustmail.com (Tad McClellan)
Subject: Re: Tough question for the guru's; Grep Once, Awk Twice (or more)
Message-Id: <slrnbagi4c.3n3.tadmc@magna.augustmail.com>

Ethan Brown <ethan@draupnir.gso.saic.com> wrote:
>>>>>> "Tad" == Tad McClellan <tadmc@augustmail.com> writes:

>    Tad> Ethan Brown <ethan@draupnir.gso.saic.com> wrote:
>     >> One of the cool (or confusing :-) things about Perl is you get
>     >> different results for different "contexts".  
> 
>    Tad> One of the cool or confusing things about natural language is you get
>    Tad> different results for different "contexts".  

>     >> For example, there is an
>     >> array context and a scalar context.
> 
>    Tad> For example, there is a plural context and a singular context.  :-)
> 
> I like your analog of natural language contexts and Perl contexts.


> Do you know where Larry came up with the idea?


Get it from the camel's mouth:

   http://www.wall.org/~larry/natural.html


-- 
    Tad McClellan                          SGML consulting
    tadmc@augustmail.com                   Perl programming
    Fort Worth, Texas


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

Date: Thu, 24 Apr 2003 18:05:22 +0000 (UTC)
From: Zeljko Vrba <mordor@fly.srk.fer.hr>
Subject: Re: Undefining Aggregates
Message-Id: <slrnbag9q2.4jr.mordor@fly.srk.fer.hr>

In article <lpUpa.42508$M_2.37170@twister.nyroc.rr.com>, TeanerTiner wrote:
> Thanks for the reply Bill. However, I do not want to know if the 
> aggregate has members. I want it to not exist, to use the language from 
> perldoc - I want there to be no memory allocated for aggregate and be 
> able to determine that.
>
But why? For your purpose it is enough to empty the aggregate:
@$array = () or %$hash = () (if you pass by reference)

Any subsequent use of any former element of aggregate anywhere in the program
will flag an error. Except if you just pass around aggregates and never refer
to their elements :)



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

Date: Thu, 24 Apr 2003 19:03:25 GMT
From: Uri Guttman <uri@stemsystems.com>
Subject: Re: Undefining Aggregates
Message-Id: <x7of2vn2f7.fsf@mail.sysarch.com>

>>>>> "T" == TeanerTiner  <no-spam-TeanerTiner@hotmail.com> writes:

  T> When making a call and passing a reference to a parameter that
  T> recieves a value, I want to undefine the parameter if there is an
  T> error. For example,

  T> scalar example:
  T> $iReturnValue = funcCall(\$param)
  T> If the function funcCall fails, I return an error code in
  T> $iReturnValue and set $param to 'undef'. This way the coder cannot use
  T> $param by accident.

that is a horrible api. why should you destroy passed in data if it is
no good? maybe the caller needs it for something else. the caller should
only deal with the returned error code and they can decide to wipe out
the data.


  T> This does not work in a consistent fashion for aggregates.

and that example doesn't show any aggregates either. but as i said it is
an evil idea and i won't help there. others may and i condemn them to
eternal cobol coding.

  T> It is too bad you think so much of yourself that you cannot answer
  T> a question without being rude and inconsiderate. I truly doubt that
  T> your methods are so superior that any others are worthless. Your
  T> attitude is what gives Perl hackers a bad name for being conceited.

oh grow up. my methods are not superior to all others but i think 29
years of coding in many languages and systems does allow me to say
things with some authority. you can ignore it if you wish but others who
read this thread may not. this is a public perl group and i don't write
just for you. undef on aggregates is wrong, evil, buggy, and just plain
dumb. you have no way to defend this. your explanation above was weak
and the design poor.

now to see what advice others gave you.

uri

-- 
Uri Guttman  ------  uri@stemsystems.com  -------- http://www.stemsystems.com
--Perl Consulting, Stem Development, Systems Architecture, Design and Coding-
Search or Offer Perl Jobs  ----------------------------  http://jobs.perl.org


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

Date: 24 Apr 2003 20:21:44 GMT
From: anno4000@lublin.zrz.tu-berlin.de (Anno Siegel)
Subject: Re: Undefining Aggregates
Message-Id: <b89h0o$4bc$1@mamenchi.zrz.TU-Berlin.DE>

TeanerTiner  <no-spam-TeanerTiner@hotmail.com> wrote in comp.lang.perl.misc:
> Bill Smith wrote:
> > "TeanerTiner" <no-spam-TeanerTiner@hotmail.com> wrote in message
> > news:3RSpa.42259$M_2.32679@twister.nyroc.rr.com...
> > 
> >>I have read all the threads concerning undefining aggregates, and I
> >>understand the reasoning behind them. However, I *really* want to
> >>undefine a hash so that 'defined(%hash)' is false. I found just this
> >>exact thing in the Shiny Ball book, page 16.  But it does not work in
> > 
> > my
> > 
> >>testing.

That's why it is marked "deprecated".  "defined( %hash)" just isn't
a reliable indicator of the state of "%hash".

> > --snip--
> > 
> > When I checked perldoc -f defined (for perl version 5.6.1), I found:
> > 
> > Use of "defined" on aggregates (hashes and arrays) is deprecated
> > It used to report whether memory for that aggregate has ever been
> > allocated. This behavior may disappear in future versions of Perl.
> > You should instead use a simple test for size:
> > 
> > 
> > This suggests that 'defined' does not mean exactly what you think, and
> > that it probably not a good idea to use it in this way.
> > 
> > Bill
> > if (@an_array) { print "has array elements\n" }
> > if (%a_hash)   { print "has hash members\n"   }
 
> Thanks for the reply Bill. However, I do not want to know if the 
> aggregate has members. I want it to not exist, to use the language from 
> perldoc - I want there to be no memory allocated for aggregate and be 
> able to determine that.

Well, you want to peek beyond Perl's api, and the lady is pissed.
Storage allocation is perl's business and not nobody else's.

Your interface seems to be copied from a set of C routines.  There it
makes sense (well, may make sense) to set a pointer to NULL to indicate
an error.  Perl's "undef" isn't NULL, however, and "undef" can play the
role of NULL only in the domain of scalar variables, not aggregates.

It's not because we think our methods are superior that we advise
you not to use this method, it's because we know the language well
enough to know what works and what doesn't.  What you're planning
isn't a Perl interface, and it's not going to work smoothly.

Anno


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

Date: Thu, 24 Apr 2003 21:44:00 GMT
From: tiltonj@erols.com (Jay Tilton)
Subject: Re: Undefining Aggregates
Message-Id: <3ea845c4.102132543@news.erols.com>

TeanerTiner <no-spam-TeanerTiner@hotmail.com> wrote:

: Uri Guttman wrote:
: >>>>>>"T" == TeanerTiner  <no-spam-TeanerTiner@hotmail.com> writes:
: > 
: >   T> I have read all the threads concerning undefining aggregates, and I
: >   T> understand the reasoning behind them. However, I *really* want to
: >   T> undefine a hash so that 'defined(%hash)' is false. I found just this
: >   T> exact thing in the Shiny Ball book, page 16.  But it does not work in
: >   T> my testing.
: > 
: > why do you want to do that? you had better have an amazing and cogent
: > reason for it.
:
: When making a call and passing a reference to a parameter that recieves 
: a value, I want to undefine the parameter if there is an error. For example,
: 
: scalar example:
: $iReturnValue = funcCall(\$param)
: If the function funcCall fails, I return an error code in $iReturnValue 
: and set $param to 'undef'. This way the coder cannot use $param by accident.

_Your_ function is going to slaughter _my_ variables just because it
can't deal?  How rude.

This kind of action at a distance is not an amazing and cogent reason
for doing what you want.  It is in fact a reason to avoid doing what
you want.

: This does not work in a consistent fashion for aggregates.

Good.  Take that as a cue to rethink your technique instead of trying
to beat Perl (and the perl5 porters who deprecated the feature you
want to exploit) into submission.

: > and my primary guess is that you have a very poor design that would even
: > lead you to think this is a good idea.
:
: It is too bad you think so much of yourself that you cannot answer a 
: question without being rude and inconsiderate.

Uri is trying to dissuade you from doing something he and others
genuinely consider a Bad Thing.  He was neither rude nor
inconsiderate, though he is demonstrably capable of being so when the
situation demands.

: I truly doubt that your 
: methods are so superior that any others are worthless.

That is not what Uri said at all.  He promised to give reasons why he
thinks it's a bad idea, and asked for your reasons for thinking it's a
good idea.  Take advantage of this opportunity to show the value of
your methods instead of reciprocating a perceived attack.

: Your attitude is 
: what gives Perl hackers a bad name for being conceited.

Pfah.  Perl hackers have a bad name for lots of reasons.  The insults
tend to reflect the baseness of the authors more than they illuminate
the deficient character of the target.

Being seen as conceited for refusing to perpetuate bad habits has
never weakened their resolve in that endeavor, and it cannot make
virtuous an evil program.



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

Date: Thu, 24 Apr 2003 20:33:03 +0000 (UTC)
From: urbctt334@mail.ru
Subject: WEB server testing results here
Message-Id: <b89hls$glt$49@news.rol.ru>


   25.04.2003      St.Petersburg




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

Date: Thu, 24 Apr 2003 14:26:16 -0700
From: "oracle1" <santyspamsharma@hotmail.com>
Subject: {newbie} sorting  of files
Message-Id: <b89kja$7ssbf$1@ID-84096.news.dfncis.de>

Hello all,
I am trying to sort files in directory by modification time. I have
expreimented a lot but could not figure out why code below fails to sort.
TIA
santosh


$dir_to_process ="/users/student/kp/learnperl";
opendir DH, $dir_to_process or die "Can not open $dir_to_process: $!";
while ( $file_name = readdir DH){
$file_name = "$dir_to_process/$file_name";
next unless -f $file_name;

$file_hash{$file_name} =  (stat _)[9];
}

#sort by_time_and_files  keys %file_hash;
foreach $key (sort by_time_and_files (keys (%file_hash))){
print "$file_hash{$key}: $key\n";
}
closedir DH;
sub by_time_and_files {
 $file_hash{b} <=> $file_hash{a}
or
$a cmp $b
}




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

Date: Thu, 24 Apr 2003 21:30:53 GMT
From: Uri Guttman <uri@stemsystems.com>
Subject: Re: {newbie} sorting  of files
Message-Id: <x765p3lh0y.fsf@mail.sysarch.com>

>>>>> "o" == oracle1  <santyspamsharma@hotmail.com> writes:

  o> sub by_time_and_files {
  o>  $file_hash{b} <=> $file_hash{a}
                 $b                $a
  o> or
  o> $a cmp $b
  o> }



-- 
Uri Guttman  ------  uri@stemsystems.com  -------- http://www.stemsystems.com
--Perl Consulting, Stem Development, Systems Architecture, Design and Coding-
Search or Offer Perl Jobs  ----------------------------  http://jobs.perl.org


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

Date: 24 Apr 2003 21:40:22 GMT
From: "Tassilo v. Parseval" <tassilo.parseval@rwth-aachen.de>
Subject: Re: {newbie} sorting  of files
Message-Id: <b89lk6$cj8$1@nets3.rz.RWTH-Aachen.DE>

Also sprach oracle1:

> I am trying to sort files in directory by modification time. I have
> expreimented a lot but could not figure out why code below fails to sort.
> TIA
> santosh

[ dreadful intending corrected ]

> $dir_to_process ="/users/student/kp/learnperl";
> opendir DH, $dir_to_process or die "Can not open $dir_to_process: $!";
>
> while ( $file_name = readdir DH){
>   $file_name = "$dir_to_process/$file_name";
>   next unless -f $file_name;
>   $file_hash{$file_name} =  (stat _)[9];
> }
> 
> #sort by_time_and_files  keys %file_hash;
> foreach $key (sort by_time_and_files (keys (%file_hash))){
>   print "$file_hash{$key}: $key\n";
> }
> closedir DH;
> sub by_time_and_files {
>   $file_hash{b} <=> $file_hash{a}
               ^                 ^
>                  or
>              $a cmp $b
               ^^     ^^
> }

Spot the difference? $file_hash{a} and $file_hash{b} are not the values
you want to compare.

Tassilo
-- 
$_=q#",}])!JAPH!qq(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({
pam{rekcahbus})(rekcah{lrePbus})(lreP{rehtonabus})!JAPH!qq(rehtona{tsuJbus#;
$_=reverse,s+(?<=sub).+q#q!'"qq.\t$&."'!#+sexisexiixesixeseg;y~\n~~dddd;eval


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

Date: Thu, 24 Apr 2003 14:45:02 -0700
From: "oracle1" <santyspamsharma@hotmail.com>
Subject: Re: {newbie} sorting  of files
Message-Id: <b89lmj$84n3e$1@ID-84096.news.dfncis.de>

silly me.
thanks a lot.
santosh

"Uri Guttman" <uri@stemsystems.com> wrote in message
news:x765p3lh0y.fsf@mail.sysarch.com...
> >>>>> "o" == oracle1  <santyspamsharma@hotmail.com> writes:
>
>   o> sub by_time_and_files {
>   o>  $file_hash{b} <=> $file_hash{a}
>                  $b                $a
>   o> or
>   o> $a cmp $b
>   o> }
>
>
>
> --
> Uri Guttman  ------  uri@stemsystems.com  --------
http://www.stemsystems.com
> --Perl Consulting, Stem Development, Systems Architecture, Design and
Coding-
> Search or Offer Perl Jobs  ----------------------------
http://jobs.perl.org




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

Date: Thu, 24 Apr 2003 16:58:58 -0500
From: tadmc@augustmail.com (Tad McClellan)
Subject: Re: {newbie} sorting  of files
Message-Id: <slrnbagnh2.3t3.tadmc@magna.augustmail.com>

oracle1 <santyspamsharma@hotmail.com> wrote:

> silly me.


On multiple counts no less. Besides the silliness you meant,
there are at least 2 other sillinesses here:

   top-posting

   programming Perl without "use strict"

If you'd done the 2nd, then perl itself would have pointed
out the problem in milliseconds.


[snip TOFU]


-- 
    Tad McClellan                          SGML consulting
    tadmc@augustmail.com                   Perl programming
    Fort Worth, Texas


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

Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin) 
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>


Administrivia:

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.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.

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 V10 Issue 4889
***************************************


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