[30654] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 1899 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Sat Oct 4 16:09:46 2008

Date: Sat, 4 Oct 2008 13:09: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           Sat, 4 Oct 2008     Volume: 11 Number: 1899

Today's topics:
        access elements in a complex structure <dontmewithme@got.it>
    Re: access elements in a complex structure <theaney@gmail.com>
    Re: access elements in a complex structure <dontmewithme@got.it>
    Re: access elements in a complex structure <dontmewithme@got.it>
        asdfwerwer hoydenfinleyrc@gmail.com
        Buy Tramadol Online santiagocaseygr@gmail.com
        erwerwerwer hccarlash@gmail.com
        Hello 23232 hoydenfinleyrc@gmail.com
    Re: is Win32::GUI thread safe? <zentara@highstream.net>
        new CPAN modules on Sat Oct  4 2008 (Randal Schwartz)
        Opa mana dau dnawemn hoydenfinleyrc@gmail.com
    Re: pack and hex <bart.lateur@pandora.be>
    Re: pack and hex <dontmewithme@got.it>
    Re: pack and hex <dontmewithme@got.it>
    Re: Problems flushing my buffer! (perl) <hjp-usenet2@hjp.at>
    Re: Problems flushing my buffer! (perl) <hjp-usenet2@hjp.at>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Sat, 04 Oct 2008 12:53:36 +0200
From: Larry <dontmewithme@got.it>
Subject: access elements in a complex structure
Message-Id: <dontmewithme-8217BE.12533604102008@news.tin.it>

Hi,

   I have a quick question...suppose I have the following data structure 
returned by dmap_unpack(); and shown by Data::Dumper :

$VAR1 = [
          [
            [
              'Header',
              [
                [
                  'Notice1',
                  'Hello World!'
                ],
                [
                  'Notice2',
                  'Cazzo dici??'
                ],
                [
                  'Buffer',
                  2048
                ]
              ]
            ]
          ]
        ];
 How can I access single element in the structure??

Like how can I access: key->Notice1

thanks ever so much


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

Date: Sat, 04 Oct 2008 07:25:43 -0400
From: Tim Heaney <theaney@gmail.com>
Subject: Re: access elements in a complex structure
Message-Id: <87wsgo38lk.fsf@calvin.watterson>

Larry <dontmewithme@got.it> writes:
>
>  How can I access single element in the structure??
>
> Like how can I access: key->Notice1

Unless I've miscounted, Notice1 is stored in

  $VAR1->[0][0][1][0][0]

But wouldn't you rather use a hash? I mean, is this trying to be

  my $href = { Header => { Notice1 => 'Hello World!',
                           Notice2 => 'Cazzo dici??',
                           Buffer  => 2048,
                         },
             };

so that

  $href->{Header}{Notice1}

refers to "Hello World!"?

Tim


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

Date: Sat, 04 Oct 2008 13:35:08 +0200
From: Larry <dontmewithme@got.it>
Subject: Re: access elements in a complex structure
Message-Id: <dontmewithme-12B278.13350804102008@news.tin.it>

In article <87wsgo38lk.fsf@calvin.watterson>,
 Tim Heaney <theaney@gmail.com> wrote:

> But wouldn't you rather use a hash?

I cannot use a hash. Both of your exemplase did not work: Pseudo-hashes 
are deprecated at dmap.pl line 36, <DATA> line 1


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

Date: Sat, 04 Oct 2008 13:48:08 +0200
From: Larry <dontmewithme@got.it>
Subject: Re: access elements in a complex structure
Message-Id: <dontmewithme-84BF0C.13480804102008@news.tin.it>

In article <dontmewithme-12B278.13350804102008@news.tin.it>,
 Larry <dontmewithme@got.it> wrote:

> I cannot use a hash. Both of your exemplase did not work: Pseudo-hashes 
> are deprecated at dmap.pl line 36, <DATA> line 1

Iam sorry i was wrong it is all working great now


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

Date: Fri, 3 Oct 2008 16:01:32 -0700 (PDT)
From: hoydenfinleyrc@gmail.com
Subject: asdfwerwer
Message-Id: <b102a5a6-f7d2-4202-84a3-6a6c70973f49@75g2000hso.googlegroups.com>

fwrefwfqef


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

Date: Fri, 3 Oct 2008 15:41:28 -0700 (PDT)
From: santiagocaseygr@gmail.com
Subject: Buy Tramadol Online
Message-Id: <b0d2c417-f0e2-4bc3-8ebe-679bd57eb46f@d31g2000hsg.googlegroups.com>

buytramadol
 .
 .
 .
Enough to seek Tramadol! You've already found the best site where you
can purchase tramadol for lowest price!
Just click our link below and buy cheap tramadol
To order tramadol without prescription visit link below!
************************************
http://med247.us/?p=buy+tramadol
************************************
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
buytramadol
 uytramadol bytramadol butramadol buyramadol buytamadol buytrmadol
buytraadol buytramdol buytramaol buytramadl buytramado bbuytramadol
buuytramadol buyytramadol buyttramadol buytrramadol buytraamadol
buytrammadol buytramaadol buytramaddol buytramadool buytramadoll
ubytramadol byutramadol butyramadol buyrtamadol buytarmadol
buytrmaadol buytraamdol buytramdaol buytramaodl buytramadlo
buytramadol buytramadol buytramadol buytramadol buytramadol
buytramadol buytramadol buytramadol buytramadol buytramadol
buytramadol buytramadol


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

Date: Fri, 3 Oct 2008 15:59:12 -0700 (PDT)
From: hccarlash@gmail.com
Subject: erwerwerwer
Message-Id: <642fc2f3-ee7f-40f9-a406-522ede3c7ede@m74g2000hsh.googlegroups.com>

ewrwererewr


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

Date: Fri, 3 Oct 2008 16:38:39 -0700 (PDT)
From: hoydenfinleyrc@gmail.com
Subject: Hello 23232
Message-Id: <5798da8d-1264-44a6-8301-8ff1cdfc450d@a1g2000hsb.googlegroups.com>

Hello


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

Date: Sat, 04 Oct 2008 10:04:47 -0400
From: zentara <zentara@highstream.net>
Subject: Re: is Win32::GUI thread safe?
Message-Id: <t3see49vkfrthcog066gf6vd8fed5qvrlv@4ax.com>

On Fri, 03 Oct 2008 14:34:48 -0400, "Tom F."
<starbuck42+newsgroup@gmail.com> wrote:

>zentara wrote:

>> I would bet that you can solve the problem by :
>> 
>> 1. Create the thread first in the program, before any gui code is
>> invoked.  For instance, you cannot reliably launch threads from
>> a gui callback. Threads get a copy of the parent when spawned,
>> so you want to spawn early before gui code statements are used.
>
>Is there any way to tell perl or the threads module not to make that 
>copy? I saw something like this:
>
>sub Win32::GUI::CLONE_SKIP {1};
>
>that would stop the copy, but I'm not sure it was working when I tried 
>to use it, though I wasn't sure if I had absolutely covered all the 
>different non thread-safe modules that were being used inside these 
>(i.e., Win32::GUI::Window might use non-thread-safe Win32::foo::bar 
>internally)

I don't use win32, so use a grain of salt with this.
Did CLONE_SKIP seem to work? Also test 10 or 20 runs. Threads will
act funny sometimes, seeming to run fine, then crashing unexpectedly
after 20 tests.

Gtk2 has a thread safety mechanism similar to the CLONE_SKIP you
mention, it's called set_threadsafe. BUT it is at the lowest level of
Glib, which the Gtk2 gui code is based on; so in theory it accounts for
all objects. One thing though, Glib::Object->set_threadsafe(1) must
be the first statement in the script. 
So maybe make sure CLONE_SKIP is the first line in your script. 
Also I'm not an expert at this, but I believe these thread safety
mechanisms only affect the ref_count of the objects.....in reality,
the spawned threads get an exact copy of the parent at the time of 
creation...... the gui code in the spawned thread may be disabled, but
it still gets copied due to the way threads get spawned. I may be wrong,
I seldom delve that deep and prefer just to work around it with the
hacks that I've mentioned.

>Do you think trying to use the GUI elements as shared variables would 
>solve it (does sharing simply synchronize the copies or does it stop the 
>copying?)

You don't share the GUI widgets as shared variables, Perl only allows
scalars in shared vars. In Gtk2 ,you can pass in a widget reference in
the threads->new(\&codeblock, $somewidget), and then access the widget
by a Glib->Idle_add() statement. Does Win32::Gui have something like
Idle_add? Adds a callback at first idle moment in the event loop. 

What I meant about shared vars was  try to keep only non-gui code in the
threads, and use timers in the parent thread to read shared vars set in
the thread. Then the timer can manipulate the gui widget with that data.
You need a timer in the parent thread constantly reading the shared
variables, because they are NOT automatically updated in the parent
thread, when a child thread sets them.
The only exception to this, is shared filehandles, which the parent can
read as it comes in.

For deeper expertise, you might want to ask on http://perlmonks.org

Hope that helps,
zentara 


-- 
I'm not really a human, but I play one on earth.
http://zentara.net/Remember_How_Lucky_You_Are.html 


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

Date: Sat, 4 Oct 2008 04:42:22 GMT
From: merlyn@stonehenge.com (Randal Schwartz)
Subject: new CPAN modules on Sat Oct  4 2008
Message-Id: <K876EM.1nn7@zorch.sf-bay.org>

The following modules have recently been added to or updated in the
Comprehensive Perl Archive Network (CPAN).  You can install them using the
instructions in the 'perlmodinstall' page included with your Perl
distribution.

AI-Genetic-Pro-0.20
http://search.cpan.org/~strzelec/AI-Genetic-Pro-0.20/
Efficient genetic algorithms for professional purpose. 
----
AnyEvent-4.3
http://search.cpan.org/~mlehmann/AnyEvent-4.3/
provide framework for multiple event loops 
----
App-Daemon-0.04
http://search.cpan.org/~mschilli/App-Daemon-0.04/
Start an Application as a Daemon 
----
Astro-satpass-0.018
http://search.cpan.org/~wyant/Astro-satpass-0.018/
----
B-Hooks-OP-Check-0.03
http://search.cpan.org/~flora/B-Hooks-OP-Check-0.03/
Wrap OP check callbacks 
----
Biblio-Thesaurus-0.33
http://search.cpan.org/~ambs/Biblio-Thesaurus-0.33/
Perl extension for managing ISO thesaurus 
----
Bitmask-Data-1.06
http://search.cpan.org/~maros/Bitmask-Data-1.06/
Handle bitmasks in an easy and flexible way 
----
CAM-PDF-1.52
http://search.cpan.org/~cdolan/CAM-PDF-1.52/
PDF manipulation library 
----
Catalyst-Authentication-Credential-OpenID-0.10
http://search.cpan.org/~ashley/Catalyst-Authentication-Credential-OpenID-0.10/
OpenID credential for Catalyst::Plugin::Authentication framework. 
----
Catalyst-Authentication-Store-FromSub-Hash-0.08
http://search.cpan.org/~fayland/Catalyst-Authentication-Store-FromSub-Hash-0.08/
A storage class for Catalyst Authentication using one Catalyst Model class (hash returned) 
----
Class-Proxy-Lite-1.01
http://search.cpan.org/~nkuitse/Class-Proxy-Lite-1.01/
Simple, lightweight object proxies 
----
DateTime-0.4305
http://search.cpan.org/~drolsky/DateTime-0.4305/
A date and time object 
----
Devel-NYTProf-2.04
http://search.cpan.org/~timb/Devel-NYTProf-2.04/
Powerful feature-rich perl source code profiler 
----
Device-USB-0.22
http://search.cpan.org/~gwadej/Device-USB-0.22/
Use libusb to access USB devices. 
----
Dynamic-Loader-1.01
http://search.cpan.org/~alexmass/Dynamic-Loader-1.01/
call a script without to know where is his location. 
----
FLV-Info-0.20
http://search.cpan.org/~cdolan/FLV-Info-0.20/
Extract metadata from Macromedia Flash Video files 
----
Image-TextMode-0.01
http://search.cpan.org/~bricas/Image-TextMode-0.01/
Create, manipulate and save text mode images 
----
Kx-0.034
http://search.cpan.org/~markpf/Kx-0.034/
Perl extension for Kdb+ http://kx.com 
----
Kx-0.035
http://search.cpan.org/~markpf/Kx-0.035/
Perl extension for Kdb+ http://kx.com 
----
LCFG-Build-Tools-0.0.39
http://search.cpan.org/~sjquinney/LCFG-Build-Tools-0.0.39/
LCFG software release tools 
----
Mixin-ExtraFields-Driver-DBIC-0.001
http://search.cpan.org/~rjbs/Mixin-ExtraFields-Driver-DBIC-0.001/
store Mixin::ExtraFields data in a DBIx::Class store 
----
Net-Amazon-AWIS-0.35
http://search.cpan.org/~shevek/Net-Amazon-AWIS-0.35/
Use the Amazon Alexa Web Information Service 
----
Net-DNS-Async-1.07
http://search.cpan.org/~shevek/Net-DNS-Async-1.07/
Asynchronous DNS helper for high volume applications 
----
Object-InsideOut-3.46
http://search.cpan.org/~jdhedden/Object-InsideOut-3.46/
Comprehensive inside-out object support module 
----
POE-Component-SmokeBox-0.01_02
http://search.cpan.org/~bingos/POE-Component-SmokeBox-0.01_02/
POE enabled CPAN smoke testing with added value. 
----
POE-Component-SmokeBox-0.01_03
http://search.cpan.org/~bingos/POE-Component-SmokeBox-0.01_03/
POE enabled CPAN smoke testing with added value. 
----
Parse-Eyapp-1.115
http://search.cpan.org/~casiano/Parse-Eyapp-1.115/
Extensions for Parse::Yapp 
----
PerlIO-locale-0.06
http://search.cpan.org/~rgarcia/PerlIO-locale-0.06/
PerlIO layer to use the encoding of the current locale 
----
RPC-XML-Deparser-XS-0.01
http://search.cpan.org/~mikage/RPC-XML-Deparser-XS-0.01/
Fast XML-RPC deparser written in C 
----
Rose-DBx-Object-Renderer-0.36
http://search.cpan.org/~danny/Rose-DBx-Object-Renderer-0.36/
Web UI Rendering for Rose::DB::Object 
----
Text-Template-Simple-0.60
http://search.cpan.org/~burak/Text-Template-Simple-0.60/
Simple text template engine 
----
Text-Template-Simple-0.61
http://search.cpan.org/~burak/Text-Template-Simple-0.61/
Simple text template engine 
----
WWW-TV-0.10
http://search.cpan.org/~tigris/WWW-TV-0.10/
Parse TV.com for information about TV shows. 
----
XML-SemanticDiff-0.99
http://search.cpan.org/~shlomif/XML-SemanticDiff-0.99/
Perl extension for comparing XML documents. 
----
Yahoo-Marketing-APT-1.01
http://search.cpan.org/~shenj/Yahoo-Marketing-APT-1.01/
an interface for Yahoo! Search Marketing's APT Web Services. 


If you're an author of one of these modules, please submit a detailed
announcement to comp.lang.perl.announce, and we'll pass it along.

This message was generated by a Perl program described in my Linux
Magazine column, which can be found on-line (along with more than
200 other freely available past column articles) at
  http://www.stonehenge.com/merlyn/LinuxMag/col82.html

print "Just another Perl hacker," # the original

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion


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

Date: Fri, 3 Oct 2008 16:35:44 -0700 (PDT)
From: hoydenfinleyrc@gmail.com
Subject: Opa mana dau dnawemn
Message-Id: <68bc00ee-aa9c-4465-92da-c2bd0a5433ce@u28g2000hsc.googlegroups.com>

Hello!


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

Date: Sat, 04 Oct 2008 00:10:21 +0200
From: Bart Lateur <bart.lateur@pandora.be>
Subject: Re: pack and hex
Message-Id: <fc5de4t78ejs4benfbr9ftnnf2a1busqr1@4ax.com>

Larry wrote:

>"The ID3 tag size is encoded with four bytes where the first bit (bit 7) 
>is set to zero in every byte, making a total of 28 bits. The zeroed bits 
>are ignored, so a 257 bytes long tag is represented as $00 00 02 01."
>
>"The reason to use 28 bits (representing up to 256MB) for size 
>description is that we don't want to run out of space here."
>
>I tried to convert 00 00 02 01 from hex to decimal by using my calc and 
>it gave me 513 not 257
>
>In order to get 257 I should have done 00 00 01 01, what am I doing 
>wrong?

You're nto doign anything wrong. 0x00000201 is 513, not 257. But the
*meaning* of these bytes, using the system they use, is 257.

You can manually convert the byets to a number accodring to this scheme,
for example in a loop, effectively treating the bytes as a string
representation of a number in base 128:

	my $bytes = pack "H*", '00000201';  
	my $n = 0;
	foreach my $byte (unpack 'C*', $bytes) {
	    $n *= 128;
	    $n += 127 & $byte;
	}
	print $n;

This prints 257.

An alternative is to use Perl's built in support for BER compressed
integers, see perlfunc -f pack:

	w	A BER compressed integer (not an ASN.1 BER, see 
		perlpacktut for details).  Its bytes represent an 
		unsigned integer in base 128, most significant digit 
		first, with as few digits as possible.  Bit eight (the 
		high bit) is set on each byte except the last.

That's almost a perfect fit: most significant byte first, base 128, high
bit not part of the value. So I just need to set the high bit for the
first 3 bytes (but not for the last), and unpack can directly decode it.
Let's try that:

	my $bytes = pack "H*", '00000201';  
	my $n = unpack "w", $bytes | pack "H*", "80808000";
	print $n;

That prints 257. Bingo.

-- 
	Bart.


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

Date: Sat, 04 Oct 2008 10:25:30 +0200
From: Larry <dontmewithme@got.it>
Subject: Re: pack and hex
Message-Id: <dontmewithme-DE89A0.10253004102008@news.tin.it>

In article <n11ir5-m49.ln1@osiris.mauzo.dyndns.org>,
 Ben Morrow <ben@morrow.me.uk> wrote:

> Is there a good reason you're not using a module like MP3::Tag for this?

Hi,

  thats what Im trying to do. I have to 2 sockets sending binary data 
each other. I need to have some sort of header on top of the data. I 
cannot read from the socket line by line, I can only sysread. So I 
thought the header would like something like this:

($xx is used to indicate a byte with unknown content.)

HEADER $XX $XX $XX KEY1 $XX $XX VALUE1 KEY2 $XX $XX VALUE2 ...etc...

- The first 7 bytes of the tag are always "HEADER"
- The Header size is encoded with 3 bytes
- Key ID is 4 chars long made out of the characters capital A-Z and 0-9
- Value size is encoded with 2 bytes
- Value can contain any kind of data

So, in a nutshell, Here's what I should do:

sysread($sock, $header, 10);

$len = substr $header, 6, 4;

$len = hex2dec $len

sysread($sock, $buffer, $len);

then I can split keys and values accordingly...

Now i was wondering if it was possible to create a structure like this:

[ HEADER => [
   KEY1 => VALUE1,
   KEY2 => VALUE2,
   KEY3 => VALUE3 
   ]
]

returning a binary strings like this:

HEADER $XX $XX $XX KEY1 $XX $XX VALUE1 KEY2 $XX $XX VALUE2 KEY3 $xx $xx 
VALUE3


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

Date: Sat, 04 Oct 2008 17:50:29 +0200
From: Larry <dontmewithme@got.it>
Subject: Re: pack and hex
Message-Id: <dontmewithme-D6A765.17502804102008@news.tin.it>

In article <dontmewithme-DE89A0.10253004102008@news.tin.it>,
 Larry <dontmewithme@got.it> wrote:

>   thats what Im trying to do.

That's how I sorted it out: http://www.theartofweb.net/txt/dmap.txt


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

Date: Sat, 4 Oct 2008 20:52:24 +0200
From: "Peter J. Holzer" <hjp-usenet2@hjp.at>
Subject: Re: Problems flushing my buffer! (perl)
Message-Id: <slrngefera.etl.hjp-usenet2@hrunkner.hjp.at>

On 2008-10-03 11:30, Jürgen Exner <jurgenex@hotmail.com> wrote:
> Nigel <nigel@bouteyres.com> wrote:
>>Hi there,
>>
>>I hope you can help - I'm writing a perl program and I want it report
>>back to the browser on its progress. I read the perl faq and saw that
>>by setting $| true the buffer would be flushed each time I printed
>>instead of waiting until the program terminates. But I can't get it to
>>work.
>>
>>I'm expecting the web page to say that it's on the job, then every
>>second (for 10 seconds) to say Please Wait and then at the end to say
>>it's finished. But what happens is I wait ten seconds for a response
>>and the whole lot appears at once. Any advice would be VERY welcome.
>
> The whole lot appears at once _WHERE_?
>
> Run your sample program from the command line and you will notice,that
> there is the desired one second pause between each  "Please wait!<br
> />".
>
> Of course your web server typically will not transmit the HTTP response
> in such small chuncks but wait until it recieves EOF.

Why "of course"? The most common web server (Apache) DOES transmit
responses from CGI scripts as it receives them - it doesn't gather them
into bigger chunks. Other web servers I've worked with behave the same.
So which "typical" web server are you thinking about?

> And a web browser may not display any HTML-page until it has been
> downloaded completely.

Right. Although that's extremely rare these days. All the major
graphical HTML rendering engines (IE, Gecko, KHTML, ...) are able to
render a page incrementally. However, many text based browsers (e.g.,
lynx, w3m) aren't - if Nigel is using one of them that might be the
problem.

	hp


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

Date: Sat, 4 Oct 2008 20:55:01 +0200
From: "Peter J. Holzer" <hjp-usenet2@hjp.at>
Subject: Re: Problems flushing my buffer! (perl)
Message-Id: <slrngeff06.etl.hjp-usenet2@hrunkner.hjp.at>

On 2008-10-03 13:34, Larry <dontmewithme@got.it> wrote:
> In article 
><d1c7e452-32df-4985-a211-050e280d0656@u28g2000hsc.googlegroups.com>,
>  Nigel <nigel@bouteyres.com> wrote:
>> To clarify - it all appears at once in my web browser.
>
> I would go something like that:
[basically the same as the OP's code]

> hopefully your web server will support "chunked" content-lenght as you 
> do not know how long the response size is going to be...

Neither the server nor the browser needs to know that for HTTP/1.0. And
for HTTP/1.1, chunked is mandatory.

	hp


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

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.  

NOTE: due to the current flood of worm email banging on ruby, the smtp
server on ruby has been shut off until further notice. 

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 V11 Issue 1899
***************************************


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