[24010] in Perl-Users-Digest
Perl-Users Digest, Issue: 6208 Volume: 10
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Wed Mar 3 11:05:55 2004
Date: Wed, 3 Mar 2004 08:05:11 -0800 (PST)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)
Perl-Users Digest Wed, 3 Mar 2004 Volume: 10 Number: 6208
Today's topics:
Anyone got a good one-liner? (D. Alvarado)
Re: Anyone got a good one-liner? <ittyspam@yahoo.com>
Re: Anyone got a good one-liner? (another one)
Re: Anyone got a good one-liner? <ittyspam@yahoo.com>
Re: Anyone got a good one-liner? (Peter Scott)
Book recommendations for programmer (sw)
Re: Book recommendations for programmer <dwall@fastmail.fm>
Re: Book recommendations for programmer <ittyspam@yahoo.com>
Re: Book recommendations for programmer <Me@myco.com>
Re: DBI->connect fails with perl 5.8? <Me@myco.com>
File::Copy (sunil)
Re: File::Temp: opening the temp. file in "r+" mode? Al <usenet@morrow.me.uk>
Re: Listing installed perl modules <Joe.Smith@inwap.com>
message from perl script to java applet (Dirk)
Re: message from perl script to java applet <inbox@kodo.me.uk>
MIME::Lite and pictures <chatiman@free.fr>
Re: MIME::Lite and pictures <Guru03@despammed.com>
Re: MIME::Lite and pictures <jwillmore@remove.adelphia.net>
Re: Need help sending a password to ftp <Joe.Smith@inwap.com>
Re: Need to find a file on the execution PATH <Joe.Smith@inwap.com>
Re: Need to find a file on the execution PATH <usenet@morrow.me.uk>
new to perl <s020274@cuhk.edu.hk>
Re: passing arrays to function <raisin@delete-this-trash.mts.net>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: 3 Mar 2004 06:48:30 -0800
From: laredotornado@zipmail.com (D. Alvarado)
Subject: Anyone got a good one-liner?
Message-Id: <9fe1f2ad.0403030648.4cc08057@posting.google.com>
I have a hash
%sqlUpdatePairs
whose key and value are both scalar strings. What I would like is a
resulting string, resembling
"COL1 = 'val1', COL2 = 'val2', COL3 = 'val3'"
assuming my hash had only 3 entries, referenced by the keys "COL1",
"COL2", and "COL3" whose respective values were "val1", "val2", and
"val3" (note that the values have no apostraphes).
Anyone know a one line (or at worst two line) way I can form the
desired string out of my hash?
Much apprecation - Dave
------------------------------
Date: Wed, 3 Mar 2004 09:54:14 -0500
From: Paul Lalli <ittyspam@yahoo.com>
Subject: Re: Anyone got a good one-liner?
Message-Id: <20040303095057.R27834@dishwasher.cs.rpi.edu>
On Wed, 3 Mar 2004, D. Alvarado wrote:
> I have a hash
>
> %sqlUpdatePairs
>
> whose key and value are both scalar strings. What I would like is a
> resulting string, resembling
>
> "COL1 = 'val1', COL2 = 'val2', COL3 = 'val3'"
>
> assuming my hash had only 3 entries, referenced by the keys "COL1",
> "COL2", and "COL3" whose respective values were "val1", "val2", and
> "val3" (note that the values have no apostraphes).
>
> Anyone know a one line (or at worst two line) way I can form the
> desired string out of my hash?
>
> Much apprecation - Dave
>
print join(", ", map {"$_ = '$sqlUpdatePairs{$_}'"} keys %sqlUpdatePairs);
I'm willing to bet there are other, more efficient ways.
Paul Lalli
------------------------------
Date: Wed, 03 Mar 2004 15:06:18 +0000
From: "Steve (another one)" <y66y@56yu4b6.com>
Subject: Re: Anyone got a good one-liner?
Message-Id: <c24s9a$3ov$1@news.liv.ac.uk>
D. Alvarado wrote:
> I have a hash
>
> %sqlUpdatePairs
>
> whose key and value are both scalar strings. What I would like is a
> resulting string, resembling
>
> "COL1 = 'val1', COL2 = 'val2', COL3 = 'val3'"
>
> assuming my hash had only 3 entries, referenced by the keys "COL1",
> "COL2", and "COL3" whose respective values were "val1", "val2", and
> "val3" (note that the values have no apostraphes).
>
> Anyone know a one line (or at worst two line) way I can form the
> desired string out of my hash?
>
> Much apprecation - Dave
for (keys(%sqlUpdatePairs)){$string.="$_ = '$sqlUpdatePairs{$_}', "}
------------------------------
Date: Wed, 3 Mar 2004 10:22:54 -0500
From: Paul Lalli <ittyspam@yahoo.com>
Subject: Re: Anyone got a good one-liner?
Message-Id: <20040303102202.B27834@dishwasher.cs.rpi.edu>
On Wed, 3 Mar 2004, Steve (another one) wrote:
> D. Alvarado wrote:
> > "COL1 = 'val1', COL2 = 'val2', COL3 = 'val3'"
> >
> > assuming my hash had only 3 entries, referenced by the keys "COL1",
> > "COL2", and "COL3" whose respective values were "val1", "val2", and
> > "val3" (note that the values have no apostraphes).
> >
> > Anyone know a one line (or at worst two line) way I can form the
> > desired string out of my hash?
> >
> > Much apprecation - Dave
>
> for (keys(%sqlUpdatePairs)){$string.="$_ = '$sqlUpdatePairs{$_}', "}
>
This will add a trailing comma and space to the end of the string. That's
not what the OP asked for.
Paul Lalli
------------------------------
Date: Wed, 03 Mar 2004 15:30:51 GMT
From: peter@PSDT.com (Peter Scott)
Subject: Re: Anyone got a good one-liner?
Message-Id: <LSm1c.676406$X%5.168900@pd7tw2no>
In article <9fe1f2ad.0403030648.4cc08057@posting.google.com>,
laredotornado@zipmail.com (D. Alvarado) writes:
>I have a hash
>
>%sqlUpdatePairs
>
>whose key and value are both scalar strings. What I would like is a
>resulting string, resembling
>
>"COL1 = 'val1', COL2 = 'val2', COL3 = 'val3'"
>
>assuming my hash had only 3 entries, referenced by the keys "COL1",
>"COL2", and "COL3" whose respective values were "val1", "val2", and
>"val3" (note that the values have no apostraphes).
Maybe today they don't, but why take the chance? There is a
more efficient way of doing this, assuming you are using DBI,
that doesn't care.
>Anyone know a one line (or at worst two line) way I can form the
>desired string out of my hash?
Using said more robust way (untested):
my @col_names = keys %sqlUpdatePairs;
my $sql = "UPDATE foo SET "
. join("," => map "$_ = ?" => @col_names)
. " WHERE blah";
my $sth = $dbh->prepare($sql);
#...
$sth->execute(@sqlUpdatePairs{@col_names});
Yes, it's more than one or two lines, although with some
uglification it could be compacted to that point. But
placeholders are the way to go with SQL and the DBI,
especially if you expect to execute the SQL many times.
--
Peter Scott
http://www.perldebugged.com/
*** NEW *** http://www.perlmedic.com/
------------------------------
Date: 3 Mar 2004 05:02:22 -0800
From: stuart_white_@hotmail.com (sw)
Subject: Book recommendations for programmer
Message-Id: <db1b46bd.0403030502.39d6848c@posting.google.com>
I'm looking for book recommendations for learning Perl. I'm
comfortable with C/C++, Java, and Python, so I'm not looking for a
beginner book. My current reasons for learning Perl are to hack
together a few scripts to access a database, and possibly another
script to allow data entry over the web.
Trawling the FAQs and Deja, the most frequently recommended books seem
to be "Programming Perl" and "Learning Perl" - are those likely to
give me the information I need? Are there any other (newer?) books
which would be more suitable for what I'm trying to do?
Many thanks for any guidance - I know book recommendations are FAQs,
but the answers I've seen seem to be geared more towards
non-programmers.
------------------------------
Date: Wed, 03 Mar 2004 14:34:40 -0000
From: "David K. Wall" <dwall@fastmail.fm>
Subject: Re: Book recommendations for programmer
Message-Id: <Xns94A1616E7A4AFdkwwashere@216.168.3.30>
sw <stuart_white_@hotmail.com> wrote:
> I'm looking for book recommendations for learning Perl. I'm
> comfortable with C/C++, Java, and Python, so I'm not looking for a
> beginner book. My current reasons for learning Perl are to hack
> together a few scripts to access a database, and possibly another
> script to allow data entry over the web.
>
> Trawling the FAQs and Deja, the most frequently recommended books seem
> to be "Programming Perl" and "Learning Perl" - are those likely to
> give me the information I need? Are there any other (newer?) books
> which would be more suitable for what I'm trying to do?
>
> Many thanks for any guidance - I know book recommendations are FAQs,
> but the answers I've seen seem to be geared more towards
> non-programmers.
http://learn.perl.org/
http://books.perl.org/
------------------------------
Date: Wed, 3 Mar 2004 09:37:21 -0500
From: Paul Lalli <ittyspam@yahoo.com>
Subject: Re: Book recommendations for programmer
Message-Id: <20040303093411.V27834@dishwasher.cs.rpi.edu>
On Wed, 3 Mar 2004, sw wrote:
> I'm looking for book recommendations for learning Perl. I'm
> comfortable with C/C++, Java, and Python, so I'm not looking for a
> beginner book. My current reasons for learning Perl are to hack
> together a few scripts to access a database, and possibly another
> script to allow data entry over the web.
>
> Trawling the FAQs and Deja, the most frequently recommended books seem
> to be "Programming Perl" and "Learning Perl" - are those likely to
> give me the information I need? Are there any other (newer?) books
> which would be more suitable for what I'm trying to do?
>
> Many thanks for any guidance - I know book recommendations are FAQs,
> but the answers I've seen seem to be geared more towards
> non-programmers.
>
If you want to learn Perl, you want Learning Perl. If you want to apply
Perl for the two purposes you mentioned, you might want to try the Perl
Cookbook.
Check out http://www.perldoc.com/perl5.6/pod/perlfaq2.html#Perl-Books for
more suggetsions.
Paul Lalli
------------------------------
Date: Wed, 03 Mar 2004 20:33:41 +0530
From: Abhinav <Me@myco.com>
Subject: Re: Book recommendations for programmer
Message-Id: <Qzm1c.24$R03.133@news.oracle.com>
Paul Lalli wrote:
> On Wed, 3 Mar 2004, sw wrote:
>
>
>>I'm looking for book recommendations for learning Perl. I'm
>>comfortable with C/C++, Java, and Python, so I'm not looking for a
>>beginner book. My current reasons for learning Perl are to hack
>>together a few scripts to access a database, and possibly another
>>script to allow data entry over the web.
>>
Programming the Perl DBI, O Reilly is good for DB stuff
The CGI programming book by Sisir Gundurao (Oreilly again) is good for
perl with CGI ..
>>Trawling the FAQs and Deja, the most frequently recommended books seem
>>to be "Programming Perl" and "Learning Perl" - are those likely to
>>give me the information I need? Are there any other (newer?) books
>>which would be more suitable for what I'm trying to do?
>>
>>Many thanks for any guidance - I know book recommendations are FAQs,
>>but the answers I've seen seem to be geared more towards
>>non-programmers.
>>
>
>
> If you want to learn Perl, you want Learning Perl. If you want to apply
> Perl for the two purposes you mentioned, you might want to try the Perl
> Cookbook.
>
> Check out http://www.perldoc.com/perl5.6/pod/perlfaq2.html#Perl-Books for
> more suggetsions.
>
> Paul Lalli
HTH
Abhinav
------------------------------
Date: Wed, 03 Mar 2004 18:58:47 +0530
From: Abhinav <Me@myco.com>
Subject: Re: DBI->connect fails with perl 5.8?
Message-Id: <Ral1c.21$R03.68@news.oracle.com>
Hi Andy, Kent, Jim ..
Andy Hassall wrote:
[Snip]
> On Tue, 02 Mar 2004 10:27:56 +0530, user@domain.invalid wrote:
>
>
>>I am using DBI to connect to an Oracle database.
[Snip]
>>>>sh-2.05$ /local/perl5.8/bin/perl test1.pl
>>DBI->connect() failed: (UNKNOWN OCI STATUS 1804) OCIInitialize. Check
>>ORACLE_HOME and NLS settings etc. at test1.pl line 14
>>Cannot get handle to db at test1.pl line 14.
>>sh-2.05$
>>
>>Please let me know what I am doing wrong ....
>
>
> Most likely, you have compiled DBD::Oracle against one version of Oracle, and
> are trying to run it using an Oracle home of another (previous) version. This
> message certainly appears when trying to use a 9i compiled version with 8i
> libraries.
>
> Check your ORACLE_HOME (as the error says) and set it (and any subsidiary
> variables such as LD_LIBRARY_PATH) to the same one that DBD::Oracle was
> compiled against.
>
> Or recompile DBD::Oracle to match your current settings.
>
> Since 5.6 and 5.8 aren't binary compatible you're clearly running two
> separately compiled versions of DBD::Oracle; the Perl version is a red herring,
> it's down to the Oracle libraries.
>
The problem was what Andy mentioned : ORACLE_HOME needed to be 9i. Also,
Needed to change ORA_NLS33 to the corresponding
$ORACL_HOME/ocommon/amin/data directory
Thanks for your help
Abhinav
------------------------------
Date: 3 Mar 2004 08:00:33 -0800
From: sunilsreenivas2001@yahoo.com (sunil)
Subject: File::Copy
Message-Id: <d924fa71.0403030800.171b39bf@posting.google.com>
Hi All,
A small question about File::Copy. I want to know if calling copy()
inside my perl script creates a new process.
Thanks,
Sunil
------------------------------
Date: Wed, 3 Mar 2004 12:42:54 +0000 (UTC)
From: Ben Morrow <usenet@morrow.me.uk>
Subject: Re: File::Temp: opening the temp. file in "r+" mode? Also "man in the middle"
Message-Id: <c24jse$cg7$1@wisteria.csv.warwick.ac.uk>
Alexander.Farber@t-online.de (A. Farber) wrote:
> Ben Morrow <usenet@morrow.me.uk> wrote in message news:<c22ka9$3en$2@wisteria.csv.warwick.ac.uk>...
> > Alexander.Farber@t-online.de (A. Farber) wrote:
> > >
> > > I'm working at a CGI-script which would receive a 20 MB
> > > big file via HTTP-upload, then change few bytes in it,
> > > then calculate an MD5 hash over a region of that file
> > > and save that value into the file as well.
>
> > If the $SEARCH and $REPLACE are the same length then you can run through
> > the file and simply overwrite chunks that change with syswrite. If they
> > are not then you have to make a copy.
>
> Thank you, yes they are equal size. I haven't thought
> about just running syswrite. What I still don't know though,
> which buffer size to use while copying the uploaded file:
>
> ($fh, $filename) = tempfile(DIR => UPLOADDIR);
>
> while (<$upload>) {
> print $fh $_;
> }
Why are you copying it at all? Can you not simply edit the uploaded file
directly?
> - is bad choice, because it's a binary file.
> And if I use sysread/syswrite, then what $buffer
> size should I use? Should I use PIPE_BUF?
You can make <> read be chunks by setting it to, e.g., \4096. This is
better than using sys{read,write}, as perlio will use the right buffer
size for you.
> while (sysread $upload, $buffer, $buf_size) {
> die "syswrite failed: $!"
> unless length $buffer == syswrite $fh, $buffer;
> }
Ben
--
Musica Dei donum optimi, trahit homines, trahit deos. |
Musica truces molit animos, tristesque mentes erigit. | ben@morrow.me.uk
Musica vel ipsas arbores et horridas movet feras. |
------------------------------
Date: Wed, 03 Mar 2004 11:39:16 GMT
From: Joe Smith <Joe.Smith@inwap.com>
Subject: Re: Listing installed perl modules
Message-Id: <Etj1c.29801$ko6.301629@attbi_s02>
gusmeister wrote:
> Is there a command that allows me to list all the installed Perl modules on
> my machine?
If you've set up CPAN, use
perl -MCPAN -e autobundle
to get a list of the modules and version numbers.
-Joe
------------------------------
Date: 3 Mar 2004 04:04:34 -0800
From: buergi1@uni.de (Dirk)
Subject: message from perl script to java applet
Message-Id: <d2e30050.0403030404.40d960e@posting.google.com>
hi !
i want to run a script as a cron job on the server, which detects
serveral things.
according to the status, the user shall be informed by displaying a
message in an applet.
does anybody know how to handle that ? i have read something about
sockets but i don't have the knowledge about it. are there perhaps
some scripts available for this task ?
or maybe there is another easier way to do this ?
i can also work with a frame which is permanently refreshed to receive
messages but that's not a good way i think. or ?
it would be nice if anybody can help me in this case. thanks
regards
dirk
------------------------------
Date: Wed, 03 Mar 2004 16:44:36 +0100
From: kodo <inbox@kodo.me.uk>
Subject: Re: message from perl script to java applet
Message-Id: <c24uh5$1kp91m$2@ID-226330.news.uni-berlin.de>
maybe you could be a "bit" more specific on what you want to do?
--
greetings,
kodo
[ http://kodo.me.uk ]
------------------------------
Date: Wed, 3 Mar 2004 15:59:55 +0100
From: "chatiman" <chatiman@free.fr>
Subject: MIME::Lite and pictures
Message-Id: <4045f2e1$0$4668$626a14ce@news.free.fr>
Hello,
How do you refer to pictures attached with MIME::Lite in a multipart message
?
Thanks
------------------------------
Date: Wed, 3 Mar 2004 15:17:12 +0000 (UTC)
From: Guru03 <Guru03@despammed.com>
Subject: Re: MIME::Lite and pictures
Message-Id: <Xns94A1A5C8A48FBGuru03despammedcom@193.43.96.1>
"chatiman" <chatiman@free.fr> wrote in
news:4045f2e1$0$4668$626a14ce@news.free.fr:
> How do you refer to pictures attached with MIME::Lite in a multipart
> message ?
perldoc MIME::Lite
------------------------------
Date: Wed, 03 Mar 2004 10:20:56 -0500
From: James Willmore <jwillmore@remove.adelphia.net>
Subject: Re: MIME::Lite and pictures
Message-Id: <pan.2004.03.03.15.20.55.123914@remove.adelphia.net>
On Wed, 03 Mar 2004 15:59:55 +0100, chatiman wrote:
> How do you refer to pictures attached with MIME::Lite in a multipart message
> ?
RTFM :-)
"It's in there" ... :-)
Seriously .... the documentation does explain how to attach files to a
message. Just try out some of the sample code and it will come to you.
--
Jim
Copyright notice: all code written by the author in this post is
released under the GPL. http://www.gnu.org/licenses/gpl.txt
for more information.
a fortune quote ...
Hire the morally handicapped.
------------------------------
Date: Wed, 03 Mar 2004 12:08:15 GMT
From: Joe Smith <Joe.Smith@inwap.com>
Subject: Re: Need help sending a password to ftp
Message-Id: <PUj1c.105365$Xp.455682@attbi_s54>
joe wrote:
> expect -gl "331 Password required for*"
> expect -gl "Password:*"
> send "$password \r"
Use Expect.pm and don't put an additional blank at the end of the password.
-Joe
------------------------------
Date: Wed, 03 Mar 2004 12:03:39 GMT
From: Joe Smith <Joe.Smith@inwap.com>
Subject: Re: Need to find a file on the execution PATH
Message-Id: <vQj1c.169246$jk2.618356@attbi_s53>
John W. Krahn wrote:
> "davido@codethought.nospamforme.com" wrote:
>
>>Does anyone know of a (cross platform - works in Win32 /or/ *nix) way
>>to figure out of a executable program is on a search path? For
>>example, to find if foobar.exe is in the Win32 PATH?
>>
>>Googling didn't turn up suitable results (but I might have not not
>>used the right search criteria).
>
>
> use Env '@PATH';
>
> my $program = 'foobar.exe';
>
> -x and print "$_\n" for map "$_/$program", @PATH;
Not very cross-platform. For just Win32 and *nix, I would use
my $program = 'foobar';
-x and print "$_\n" for map {"$_/$program", "$_/$program.exe"}, @PATH;
But to do it right means also checking for .bat and .cmd, and using
File::Spec so that it will work on MacOS Classic and OpenVMS.
-Joe
------------------------------
Date: Wed, 3 Mar 2004 12:46:35 +0000 (UTC)
From: Ben Morrow <usenet@morrow.me.uk>
Subject: Re: Need to find a file on the execution PATH
Message-Id: <c24k3b$cg7$2@wisteria.csv.warwick.ac.uk>
Joe Smith <Joe.Smith@inwap.com> wrote:
> John W. Krahn wrote:
>
> > use Env '@PATH';
> >
> > my $program = 'foobar.exe';
> >
> > -x and print "$_\n" for map "$_/$program", @PATH;
>
> Not very cross-platform. For just Win32 and *nix, I would use
> my $program = 'foobar';
> -x and print "$_\n" for map {"$_/$program", "$_/$program.exe"}, @PATH;
Use $Config{_exe} for more portability.
> But to do it right means also checking for .bat and .cmd
Hmmm.... if you want to do this, you need to check for Win32 and then
use the appropriate environment var; I'd probably just stick to exe.
> , and using
> File::Spec so that it will work on MacOS Classic and OpenVMS.
...and anywhere else...
Ben
--
I've seen things you people wouldn't believe: attack ships on fire off
the shoulder of Orion; I watched C-beams glitter in the dark near the
Tannhauser Gate. All these moments will be lost, in time, like tears in rain.
Time to die. ben@morrow.me.uk
------------------------------
Date: Thu, 4 Mar 2004 00:07:15 +0800
From: "Tsui Wai-ming" <s020274@cuhk.edu.hk>
Subject: new to perl
Message-Id: <c24ved$4qq$1@justice.itsc.cuhk.edu.hk>
I just started to learn CGI by writing a perl script, but what appeared on
the browser was exactly what I'd typed in the editor, minus the
<title>xxx</title> line.
This is the script I wrote, in fact it is what I directly copied from "Perl
How to Program":
#!c:\perl\bin
#displaying time in brower
print "Content-type: text/html\n\n";
print "<html><head><title>Hello!</title>";
print "</head>\n<body>";
print scalar( localtime() );
print "</body></html>"
Many thanks!!!
------------------------------
Date: Wed, 3 Mar 2004 08:14:07 -0600
From: Web Surfer <raisin@delete-this-trash.mts.net>
Subject: Re: passing arrays to function
Message-Id: <MPG.1aafa425a3ce83a19897bb@news.mts.net>
[This followup was posted to comp.lang.perl.misc]
In article <a4c98e61c9e99e37979ef69c85731481
@localhost.talkaboutprogramming.com>, yamini_rajan@nospam.com says...
> hi,
> i can't able to pass more than one array to a function in this program
>
> #usr/bin/perl
> @a=qw(a b c d e f);
> @b=qw(h i j k l);
> get(\@a,\@b);
> sub get()
> {
> my (@ag,@bg)=@_;
>
> print@ag;
> print "\n@bg\n";
> }
> what is the mistake i have done here?
> can anyone help me in tracing the soln?
sub get()
{
my ($ref_ag,$ref_bg) = @_;
print "\n",join(", ",@$ref_bg),"\n";
------------------------------
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 V10 Issue 6208
***************************************