[29706] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 950 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Thu Oct 18 21:09:43 2007

Date: Thu, 18 Oct 2007 18:09:08 -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, 18 Oct 2007     Volume: 11 Number: 950

Today's topics:
    Re: Elisp Tutorial: HTML Syntax Coloring Code Block <java.oke@gmail.com>
    Re: how to capture exit value via pipe <ku996r@gmail.com>
    Re: how to capture exit value via pipe xhoster@gmail.com
    Re: Is perl a good candidate for Data Mining <benkasminbullock@gmail.com>
    Re: line 16 <bik.mido@tiscalinet.it>
    Re: line 16 <zaxfuuq@invalid.net>
    Re: OT Re: jabba the tuh <zaxfuuq@invalid.net>
    Re: OT Re: jabba the tuh <bik.mido@tiscalinet.it>
        perl standard <zaxfuuq@invalid.net>
    Re: perl standard <bik.mido@tiscalinet.it>
    Re: perl standard <kkeller-usenet@wombat.san-francisco.ca.us>
    Re: perl standard <benkasminbullock@gmail.com>
    Re: perl standard <mritty@gmail.com>
    Re: perl standard <ben@morrow.me.uk>
    Re: please help optimize sub <1usa@llenroc.ude.invalid>
    Re: printing a subject line <spamtrap@dot-app.org>
    Re: Setting perl's output buffer size <itay.gr@gmail.com>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Thu, 18 Oct 2007 13:36:02 -0700
From:  "j.oke" <java.oke@gmail.com>
Subject: Re: Elisp Tutorial: HTML Syntax Coloring Code Block
Message-Id: <1192739762.151628.132800@i38g2000prf.googlegroups.com>

On 18 Ott, 06:15, Xah Lee <x...@xahlee.org> wrote:
> [...]

Half lost on my firmness gains to more glad heart,
Or violent and from forage drives
A glimmering of all sun new begun
Both harp thy discourse they march'd,
Forth my early, is not without delay;
For their soft with whirlwind; and balm.
Undoubtedly he scornful turn'd round ninefold,
Though doubled now what redounds,
And chains these a lower world devote, yet inflicted?
Till body or rare, and best things else enjoy'd in heav'n
To stand divided light at ev'n and poise their eyes,
Or nourish, lik'ning spiritual, I have thou appear.

-Henley



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

Date: 18 Oct 2007 13:53:58 -0700
From: ku916 <ku996r@gmail.com>
Subject: Re: how to capture exit value via pipe
Message-Id: <1192735340.259345.87340@i38g2000prf.googlegroups.com>

On 18 Oct, 14:34, xhos...@gmail.com wrote:
> ku916 <ku9...@gmail.com> wrote:
> > I wrote a perl script that would read stdout and parse for particular
> > set of keywords, if found it will exit with error status.
>
> > sample cmd:
> > > sqlplus user/wrong_password @somesql.sql | perl_filter.pl
>
> > perl_filter.pl is my script
> > since we passed in <wrong_password> into sqlplus, perl_filter.pl will
> > parse the stdout (from sqlplus) and find the keyword (i.e. error) and
> > exit with non-zero value
>
> > but the problem I'm having now is that when the parent command itself
> > errors out how can perl_filter.pl catch the exit value ($?) viva pipe
> > like:
> > > sqlpus user/wrong_password @somesql.sql | perl_filter.pl
>
> It appears that a shell is what is starting sqlpus, and thus it is the
> shell's responsibility to deal with the error.  If you want Perl to deal
> with it, make Perl start the script in the first place:
>
> open my $fh, "-|", 'sqlpus user/wrong_password @somesql.sql'
>      or do_something_with_errors($!,$?);
>
> Maybe even using the 4 or more argument form of pipe open.
>
> Or you could just assume that if STDIN is empty, then an error occurred,
> but that seems like a pretty non-general and/or brittle solution.
>
> Xho
>
> --
> --------------------http://NewsReader.Com/--------------------
> The costs of publication of this article were defrayed in part by the
> payment of page charges. This article must therefore be hereby marked
> advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
> this fact.

I've tried grabbing PIPESTATUS inside my perl script but now luck,
why?
if ( $? != 0 || $PIPESTATUS[0] != 0 )
{
    print "caught failed exit status\n";
    exit 1;
}
else {
    exit 0;
}





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

Date: 18 Oct 2007 22:18:17 GMT
From: xhoster@gmail.com
Subject: Re: how to capture exit value via pipe
Message-Id: <20071018181819.685$p6@newsreader.com>

ku916 <ku996r@gmail.com> wrote:
> On 18 Oct, 14:34, xhos...@gmail.com wrote:

> I've tried grabbing PIPESTATUS inside my perl script but now luck,
> why?
> if ( $? != 0 || $PIPESTATUS[0] != 0 )

If you explain why you think it *should* work, perhaps we can explain
why you are wrong to think that.

Perl DOES NOT HAVE a built-in variable named $PIPESTATUS or @PIPESTATUS,
as you would have found out if you used strict.

$ perl -le 'use strict; print $PIPESTATUS[0]'

Global symbol "@PIPESTATUS" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.

Xho

-- 
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.


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

Date: Thu, 18 Oct 2007 17:03:08 -0700
From:  "benkasminbullock@gmail.com" <benkasminbullock@gmail.com>
Subject: Re: Is perl a good candidate for Data Mining
Message-Id: <1192752188.654869.324850@k35g2000prh.googlegroups.com>

On Oct 18, 10:39 am, Bo Yang <struggl...@gmail.com> wrote:
>    I am wondering is perl a good candidate for Data Mining? I intend to
> use Perl to analyze tons of data and fetch some useful informatino from
> them. Does perl designed for this?
> Thanks in advance!

Apparently biologists use Perl like this.




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

Date: Thu, 18 Oct 2007 22:09:05 +0200
From: Michele Dondi <bik.mido@tiscalinet.it>
Subject: Re: line 16
Message-Id: <q6ffh39jtpeir5undpa2mt23i3a3rv6rs6@4ax.com>

On Thu, 18 Oct 2007 12:05:52 -0700, "Wade Ward" <zaxfuuq@invalid.net>
wrote:

>> But of course you can use an if-else construct instead.
>>
>I tried to find something in my reading last night, but there is *nothing* 
>on this in the Camel book, not under value or return, nor in functions.

But it is far too wide a subject to be covered at a single point:
nothin exhotic about it. You just have some functions that may return
a value, and you want to check that. The most common case is:

  open my $fh, '<', $file or die "Can't open '$file': $!\n";


Michele
-- 
{$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr
(($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB='
 .'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_,
256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,


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

Date: Thu, 18 Oct 2007 16:18:45 -0700
From: "Wade Ward" <zaxfuuq@invalid.net>
Subject: Re: line 16
Message-Id: <wI2dnRIWgqxdRoranZ2dnUVZ_uGknZ2d@comcast.com>



"Michele Dondi" <bik.mido@tiscalinet.it> wrote in message 
news:q6ffh39jtpeir5undpa2mt23i3a3rv6rs6@4ax.com...
> On Thu, 18 Oct 2007 12:05:52 -0700, "Wade Ward" <zaxfuuq@invalid.net>
> wrote:
>
>>> But of course you can use an if-else construct instead.
>>>
>>I tried to find something in my reading last night, but there is *nothing*
>>on this in the Camel book, not under value or return, nor in functions.
>
> But it is far too wide a subject to be covered at a single point:
> nothin exhotic about it. You just have some functions that may return
> a value, and you want to check that. The most common case is:
>
>  open my $fh, '<', $file or die "Can't open '$file': $!\n";

I've died more times than I can count, so if that rates as checking the 
return, then I've got that base covered.
-- 
wade ward
"Nicht verzagen, Bruder Grinde fragen."




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

Date: Thu, 18 Oct 2007 16:16:42 -0700
From: "Wade Ward" <zaxfuuq@invalid.net>
Subject: Re: OT Re: jabba the tuh
Message-Id: <s9ydnUoGVIPYRoranZ2dnUVZ_g-dnZ2d@comcast.com>



"Michele Dondi" <bik.mido@tiscalinet.it> wrote in message 
news:h5ffh3pce6nu3eeqbbifkagu3fe9bejfo4@4ax.com...
> On Thu, 18 Oct 2007 12:21:52 -0700, "Wade Ward" <zaxfuuq@invalid.net>
> wrote:
>
>>> :        2: the meaning of a word [syn: {word meaning}, {word sense}]
>>'acceptation' is an oxymoron in english.  It is not in common usage, like
>>its synonym "usage."  As this sentence stands:
>
> Are you sure it is an *oxymoron*?!?
Yes, like "military intelligence," it contradicts itself quickly, as it 
pertains to common usage but is not *in* common usage.
-- 
wade ward
"Nicht verzagen, Bruder Grinde fragen."




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

Date: Fri, 19 Oct 2007 01:02:52 +0200
From: Michele Dondi <bik.mido@tiscalinet.it>
Subject: Re: OT Re: jabba the tuh
Message-Id: <0bpfh312nou1k0bf5ad4j53uqr5dumuuro@4ax.com>

On Thu, 18 Oct 2007 16:16:42 -0700, "Wade Ward" <zaxfuuq@invalid.net>
wrote:

>>>> :        2: the meaning of a word [syn: {word meaning}, {word sense}]
>>>'acceptation' is an oxymoron in english.  It is not in common usage, like
>>>its synonym "usage."  As this sentence stands:
>>
>> Are you sure it is an *oxymoron*?!?
>Yes, like "military intelligence," it contradicts itself quickly, as it 
>pertains to common usage but is not *in* common usage.

Well, but it is not an oxymoron in itself. It's a not commonly used
word. Since I use the Italian word 'accezione' (which is the direct
accpetation of 'acceptation' in that acceptation) which is not the
most commonly used either but it the most precise in linguistic terms,
I see no reason why I shouldn't use 'acceptation' in English. In both
cases they're correct words used correctly. Should I only limit myself
to common usage I should probably write like kidiots, or (in Italian)
bimbiminkia. Which is not going to happen, ever.


Michele
-- 
{$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr
(($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB='
 .'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_,
256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,


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

Date: Thu, 18 Oct 2007 16:24:45 -0700
From: "Wade Ward" <zaxfuuq@invalid.net>
Subject: perl standard
Message-Id: <HqCdnayxQ7u1QIranZ2dnUVZ_vKunZ2d@comcast.com>

I'm far enough along in Perl now that I'd like to lay eyes on the Standard.

Usually they have the full standard available for $250 and a treatment of 
the standard that's good enough for learners that costs nada.  I'm 
interested in the latter.  Does anyone know of such a document?

TIA,
-- 
wade ward
"Nicht verzagen, Bruder Grinde fragen."




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

Date: Fri, 19 Oct 2007 01:04:33 +0200
From: Michele Dondi <bik.mido@tiscalinet.it>
Subject: Re: perl standard
Message-Id: <ehpfh394s0ctsqfs3s9ef4riv0nfu3pk81@4ax.com>

On Thu, 18 Oct 2007 16:24:45 -0700, "Wade Ward" <zaxfuuq@invalid.net>
wrote:

>I'm far enough along in Perl now that I'd like to lay eyes on the Standard.
>
>Usually they have the full standard available for $250 and a treatment of 
>the standard that's good enough for learners that costs nada.  I'm 
>interested in the latter.  Does anyone know of such a document?

Huh?!? Perl unlike other languages is defined by its own
implementation. At least in 5's realms. Get used to it. Just refer to
the docs that came with your perl.


Michele
-- 
{$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr
(($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB='
 .'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_,
256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,


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

Date: Thu, 18 Oct 2007 16:44:56 -0700
From: Keith Keller <kkeller-usenet@wombat.san-francisco.ca.us>
Subject: Re: perl standard
Message-Id: <po7lu4x95i.ln2@goaway.wombat.san-francisco.ca.us>

On 2007-10-18, Wade Ward <zaxfuuq@invalid.net> wrote:
> I'm far enough along in Perl now that I'd like to lay eyes on the Standard.
>
> Usually they have the full standard available for $250 and a treatment of 
> the standard that's good enough for learners that costs nada.  I'm 
> interested in the latter.  Does anyone know of such a document?

The full standard is the official source code.  The standard beginner's
text is the Llama, _Learning Perl_; a shorter intro is in
perldoc perlintro.  The standard documentation is that which comes with
Perl and/or the Camel, _Programming Perl_.

--keith

-- 
kkeller-usenet@wombat.san-francisco.ca.us
(try just my userid to email me)
AOLSFAQ=http://www.therockgarden.ca/aolsfaq.txt
see X- headers for PGP signature information



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

Date: Thu, 18 Oct 2007 17:00:47 -0700
From:  "benkasminbullock@gmail.com" <benkasminbullock@gmail.com>
Subject: Re: perl standard
Message-Id: <1192752047.564307.236310@z24g2000prh.googlegroups.com>

On Oct 19, 8:04 am, Michele Dondi <bik.m...@tiscalinet.it> wrote:

> Perl unlike other languages is defined by its own
> implementation. At least in 5's realms. Get used to it. Just refer to
> the docs that came with your perl.

Logically speaking, if you accept that Perl is defined by its
implementation, then you also accept that there is no such thing as a
bug in Perl. If Perl does something crazy or unexpected, then since
Perl is "defined by its implementation", the bizarre behaviour is not
a bug, it is the correct behaviour of Perl, at least as far as the
language is "defined by its implementation". Also you have to accept
that the documentation is wrong if it says something different from
what Perl actually does. So if Perl exhibits some bug then the
documentation should be considered incorrect, not Perl.





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

Date: Thu, 18 Oct 2007 17:41:22 -0700
From:  Paul Lalli <mritty@gmail.com>
Subject: Re: perl standard
Message-Id: <1192754482.690169.74570@z24g2000prh.googlegroups.com>

On Oct 18, 7:24 pm, "Wade Ward" <zaxf...@invalid.net> wrote:
> I'm far enough along in Perl now that I'd like to lay eyes on
> the Standard.
>
> Usually they have the full standard available for $250

Who is this "they" of whom you speak?   There is no such entity.
There's Larry.  What he says Perl should do is as close to an official
"standard" as you're ever going to find.  (See also: "The Rules",
`perldoc perlhack`)

Paul Lalli



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

Date: Fri, 19 Oct 2007 01:46:35 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: perl standard
Message-Id: <bcblu4-g56.ln1@osiris.mauzo.dyndns.org>


Quoth Paul Lalli <mritty@gmail.com>:
> On Oct 18, 7:24 pm, "Wade Ward" <zaxf...@invalid.net> wrote:
> > I'm far enough along in Perl now that I'd like to lay eyes on
> > the Standard.
> >
> > Usually they have the full standard available for $250
> 
> Who is this "they" of whom you speak?   There is no such entity.
> There's Larry.  What he says Perl should do is as close to an official
> "standard" as you're ever going to find.  (See also: "The Rules",
> `perldoc perlhack`)

And, of course, perldoc -q ansi .

Ben



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

Date: Thu, 18 Oct 2007 22:48:52 GMT
From: "A. Sinan Unur" <1usa@llenroc.ude.invalid>
Subject: Re: please help optimize sub
Message-Id: <Xns99CDBF6313331asu1cornelledu@127.0.0.1>

Jan Pluntke <ulmai@gmx.de> wrote in
news:u8x6097jj.fsf@ID-18539.user.dfncis.de: 

> QoS@domain.invalid writes:
> 
>> Are there ways to have this execute faster using hashes or map
>> functions? Any ideas on optimizing the following subroutine would be
>> greatly appreciated. 
> 
> Somehow, this has the reek of homework ...
> 
>> ======================================================================
>> == sub optimizeMePlease
>> {
>>   my $input = $_[0];
>>   my $return;
>>   my @array = (
>>     1.6931595338935,  5.07947860168049, 8.46579766946749,
>>     11.8521167372545, 15.2384358050415, 18.6247548728285,
>>     22.0110739406155, 25.3973930084025, 28.7837120761895,
>>     32.1700311439765, 35.5563502117635, 38.9426692795505,
>>     42.3289883473375, 45.7153074151245, 49.1016264829115,
>>     52.4879455506985, 55.8742646184855, 59.2605836862725,
>>     62.6469027540595, 66.0332218218465, 69.4195408896335,
>>     72.8058599574205, 76.1921790252075, 79.5784980929945,
>>     82.9648171607815, 86.3511362285685, 89.7374552963554,
>>     93.1237743641424, 96.5100934319294, 100,
>>   );
 ...

> This is not 100% exact, and you will need to check the special cases
> ( < $array[0], > $array[29]), but from the data I would assume that
> 
> int (($input - 1,6931595338935) / 3,38631906778700)
> 
> is what you are actually looking for ...

In my testing, there were issues with truncation. So, I tried the 
following:

#!/usr/bin/perl

use strict;
use warnings;

use File::Slurp;
use constant REPS => 1_000_000;

my @results;
$results[ REPS - 1 ] = 0; 

my @array = (
    1.6931595338935,  5.07947860168049, 8.46579766946749,
    11.8521167372545, 15.2384358050415, 18.6247548728285,
    22.0110739406155, 25.3973930084025, 28.7837120761895,
    32.1700311439765, 35.5563502117635, 38.9426692795505,
    42.3289883473375, 45.7153074151245, 49.1016264829115,
    52.4879455506985, 55.8742646184855, 59.2605836862725,
    62.6469027540595, 66.0332218218465, 69.4195408896335,
    72.8058599574205, 76.1921790252075, 79.5784980929945,
    82.9648171607815, 86.3511362285685, 89.7374552963554,
    93.1237743641424, 96.5100934319294, 100,
);

srand( 0xdeadbeef );

for my $t ( 0 .. REPS - 1 ) {
    $results[$t] = optimizeMePlease( rand 100 );
}

write_file( oo3_results => [ map { "$_\n" } @results ] );

sub optimizeMePlease {
    my $input = $_[0];

    return 29 if $input <= $array[0];

    if ( $input <= $array[-1] ) {
        my $i = int( ($input - 1.6931595338935) / 3.38631906778700 );
        my $j = ($i < 29 ? $i + 1 : $i );
        return $j if $input <= $array[$j];
        return $i;
    }
    else {
        warn "Invalid input value: [$input]. Using default!";
        return 29;
    }
}

__END__

Running times were 20.2 seconds for the original version versus 11.7 
seconds for the version above.

The version with just the array moved out of the sub ran in 14.2 seconds.

After replacing the sub with 

sub optimizeMePlease { return 1 }

as a control, the script ran in 9 seconds.

I guess one could thus say the version above represents a speed-up of about 
75%.

This is on Windows XP SP2, AS Perl 5.8.8.822, Intel Dual Core.

Before someone tells me, yes, I know, I should have used Benchmark (and the 
OP should to assess the results on his platform).

Sinan

-- 
A. Sinan Unur <1usa@llenroc.ude.invalid>
(remove .invalid and reverse each component for email address)
clpmisc guidelines: <URL:http://www.augustmail.com/~tadmc/clpmisc.shtml>



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

Date: Thu, 18 Oct 2007 16:42:39 -0400
From: Sherman Pendley <spamtrap@dot-app.org>
Subject: Re: printing a subject line
Message-Id: <m1ve94m9xc.fsf@dot-app.org>

pacman@TheWorld.com (Alan Curry) writes:

> Putting undeclared POD markup in a Usenet message seems about as wise as
> putting in other kinds of undeclared markup.
>
> Although you might wish that every perl programmer document every program and
> every subroutine with inline POD, they don't. (In some cases, we're lucky if
> they \fIread\fR any documentation, let alone write it.)

LOL!

Now I'm wondering how many folks will recognize undeclared roff markup. :-)

sherm--

-- 
Web Hosting by West Virginians, for West Virginians: http://wv-www.net
Cocoa programming in Perl: http://camelbones.sourceforge.net


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

Date: Thu, 18 Oct 2007 22:05:17 -0000
From:  Itay Greenspon <itay.gr@gmail.com>
Subject: Re: Setting perl's output buffer size
Message-Id: <1192745117.893721.39940@e9g2000prf.googlegroups.com>

On Oct 16, 3:24 pm, Ben Morrow <b...@morrow.me.uk> wrote:
> Quoth Itay Greenspon <itay...@gmail.com>:
>
>
>
> > When printing to an output handle, buffering varies with the type of
> > output device.
> > >From the perl cookbook:
> > "Disk files are block buffered, often with a buffer size of more than
> > 2K. Pipes and sockets are often buffered with a buffer size between
> > 1/2 and 2K. Serial devices, including terminals, modems, mice, and
> > joysticks, are normally line-buffered; stdio sends the entire line out
> > only when it gets the newline."
>
> > There's a simple mechanism to enable autoflushing (using $| or
> > otherwise) ,
> > But can one control the SIZE of the output buffer?
> > (rather than setting buffering "on"/"off")
>
> Why do you want to? The buffer is chosen to be an appropriate size to
> get efficient IO.
>
> With perls before 5.8, you can use IO::Handle::setvbuf to set the size
> of stdio's buffers. After 5.8 perl doesn't use stdio by default, so the
> size of the buffer cannot be set. If you have a need to control the
> buffering that accurately, you are best off opening the file with a
> :unix layer (see perldoc PerlIO) to get unbuffered IO, and doing the
> buffering yourself.
>
> Ben

Thanks ben, I'll try the unix layer.
btw,
I need this because I'm using a custom (non standard) IO device.



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

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 950
**************************************


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