[28141] in Perl-Users-Digest
Perl-Users Digest, Issue: 9505 Volume: 10
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Fri Jul 21 00:05:43 2006
Date: Thu, 20 Jul 2006 21:05:04 -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, 20 Jul 2006 Volume: 10 Number: 9505
Today's topics:
Re: CGI-Timeout causing "internal server error"???? usenet@DavidFilmer.com
Re: CGI-Timeout causing "internal server error"???? <laff7430@bellsouth.net>
Re: CGI-Timeout causing "internal server error"???? <mritty@gmail.com>
Re: CGI.pm and lost carriage returns <1usa@llenroc.ude.invalid>
Re: CGI.pm and lost carriage returns <justin.0607@purestblue.com>
Re: Clock <sisyphus1@nomail.afraid.org>
Re: Getting started in PXPerl, i.e how to run a script? <sigzero@gmail.com>
how to get perl to untar a tar.gz to a different direct <jack_posemsky@yahoo.com>
Re: how to get perl to untar a tar.gz to a different di kenslaterpa@hotmail.com
Re: how to get perl to untar a tar.gz to a different di <sherm@Sherm-Pendleys-Computer.local>
Re: How to use a module's @EXPORT array to document its <ksamp@vp_removeit_.pl>
Re: How to use a module's @EXPORT array to document its <1usa@llenroc.ude.invalid>
Re: libstdc++ problem with ExtUtils::MakeMaker <sisyphus1@nomail.afraid.org>
Re: Net::Telnet - Library Application robic0
Re: Net::Telnet - Library Application robic0
RXParse robic0
Re: subroutine <1usa@llenroc.ude.invalid>
Re: subroutine usenet@DavidFilmer.com
Re: subroutine <tadmc@augustmail.com>
Re: subroutine robic0
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: 20 Jul 2006 15:11:40 -0700
From: usenet@DavidFilmer.com
Subject: Re: CGI-Timeout causing "internal server error"????
Message-Id: <1153433500.374243.43520@i3g2000cwc.googlegroups.com>
Carl Lafferty wrote:
> script' code to run from cmd line) When I run it from the browser, it
> simply gives me "internal server error" and my
Put this at the top of your program:
CGI::Carp qw {carpout fatalsToBrowser warningsToBrowser };
If your script throws warnings in a shell then it can confuse your
webserver (because the warnings aren't in the form of a properly
formatted HTML page).
FWIW, any time a program works from a shell but not from a browser, the
first thing I look at is whether the userid which the webserver runs
under has access to the files, etc. A quick check is to 'su' to your
webserver userid (if you are able) and run the script from a shell
under that userid.
--
David Filmer (http://DavidFilmer.com)
------------------------------
Date: Thu, 20 Jul 2006 21:57:51 -0400
From: Carl Lafferty <laff7430@bellsouth.net>
Subject: Re: CGI-Timeout causing "internal server error"????
Message-Id: <dwWvg.15549$Bx.3610@bignews5.bellsouth.net>
> Put this at the top of your program:
> CGI::Carp qw {carpout fatalsToBrowser warningsToBrowser };
I tried this and I get some weird messages back from the web server.
this one in particular
newbooks.cgi: Can't locate object method "new" via package "CGI" at
./newbooks.cgi line 153.
the line it refers to is
$formdata = new CGI;
> FWIW, any time a program works from a shell but not from a browser, the
> first thing I look at is whether the userid which the webserver runs
> under has access to the files, etc. A quick check is to 'su' to your
> webserver userid (if you are able) and run the script from a shell
> under that userid.
>
Now that is a good question. while I am not accessing any files I AM
accessing a telnet server.
I'll attempt it as a web user from the cmd line.
------------------------------
Date: 20 Jul 2006 20:03:36 -0700
From: "Paul Lalli" <mritty@gmail.com>
Subject: Re: CGI-Timeout causing "internal server error"????
Message-Id: <1153451015.978195.240030@p79g2000cwp.googlegroups.com>
Carl Lafferty wrote:
> > Put this at the top of your program:
> > CGI::Carp qw {carpout fatalsToBrowser warningsToBrowser };
> I tried this and I get some weird messages back from the web server.
> this one in particular
> newbooks.cgi: Can't locate object method "new" via package "CGI" at
> ./newbooks.cgi line 153.
>
David goofed. It should have been:
use CGI::Carp qw/carpout fatalsToBrowswer warningsToBrowser/;
^^^^
Note the "use".
I don't know whether or not that's the *only* problem in your script,
but it's certainly one of them.
> the line it refers to is
>
> $formdata = new CGI;
Note also that this line is not a replacement for the
use CGI;
line. It is an addition.
Paul Lalli
------------------------------
Date: Thu, 20 Jul 2006 22:12:22 GMT
From: "A. Sinan Unur" <1usa@llenroc.ude.invalid>
Subject: Re: CGI.pm and lost carriage returns
Message-Id: <Xns9806B94B86856asu1cornelledu@127.0.0.1>
"Joseph Czapski" <jczapski@nnnot.com> wrote in
news:U5Svg.9951$Zf.818@trndny07:
> You're right! Further testing shows me that the 'physical' wrap of
> the textarea box does NOT behave as described in the HTML spec.
What spec?
I see no such attribute:
http://www.w3.org/TR/html4/interact/forms.html#h-17.7
This thread has really strayed off-topic.
Sinan
--
A. Sinan Unur <1usa@llenroc.ude.invalid>
(remove .invalid and reverse each component for email address)
comp.lang.perl.misc guidelines on the WWW:
http://augustmail.com/~tadmc/clpmisc/clpmisc_guidelines.html
------------------------------
Date: Thu, 20 Jul 2006 23:10:11 -0000
From: Justin C <justin.0607@purestblue.com>
Subject: Re: CGI.pm and lost carriage returns
Message-Id: <slrnec037h.33b.justin.0607@moonlight.purestblue.com>
On 2006-07-20, David Squire <David.Squire@no.spam.from.here.au> wrote:
> Justin C wrote:
>> On 2006-07-20, David Squire <David.Squire@no.spam.from.here.au> wrote:
>>> How and where are you displaying $value to make this judgment? In a web
>>> browser? If so, not that HTML does not recognize carriage returns - it
>>> uses <BR> (or <BR/> for XHTML :) ) to indicate line breaks.
>>
>> I don't like to get pedantic but I like even less incorrect information
>> being passed on.
>>
>> XHTML is lower case only, at least from 1.0 onwards. So that'd be <br/>.
>
> Yikes. I had no idea. Thanks for that. No browser that I know of yet cares.
>
> I had (wrongly) assumed that it continued the (perhaps de facto) case
> insensitivity of HTML.
>
> I must admit that I can't see any advantage to case-sensitivity for
> XHTML tokens, particularly given the history of HTML.
It's got something to do with XML being case sensitive.
http://www.w3.org/TR/xhtml1/#h-4.2
Actually, the above link doesn't say any more than I have above... but
it's from the horses mouth. I'm sure, if you want the gorey details,
they're around on Google.
Justin.
--
Justin C, by the sea.
------------------------------
Date: Fri, 21 Jul 2006 11:15:28 +1000
From: "Sisyphus" <sisyphus1@nomail.afraid.org>
Subject: Re: Clock
Message-Id: <44c02b90$0$25276$afc38c87@news.optusnet.com.au>
"TheOrangeRemix" <fgchan@gmail.com> wrote in message
news:1153417362.041583.81100@b28g2000cwb.googlegroups.com...
> Hi,
>
> I would like to set up a script that includes a Windows API interface
> of a pop-up that displays a changeable date and time. Whatever date and
> time is set, the program will input that data into a time array.
>
> For example, I if I run the program, set today's date and time on the
> interface: July 20, 2006 10:40 AM, it will output the result into an
> array like this:
>
> @runtime = (0, 40, 10, 20, 6, 2006); ### (seconds, minutes, hours, day,
> month (-1), year)
>
> I guess there are two questions involved: how do I call the described
> API and how does it get placed into an array for processing?
>
David has given you advice on how to manipulate the date.
I don't quite follow the Windows API requirements, but if you are wanting to
create a message box pop-up on Windows you can do so with the
Win32::MsgBox() function:
use warnings;
use Win32;
my $message = "wow!!";
Win32::MsgBox($message);
__END__
But if you need your perl script to read in the info from a pop-up .... then
that's not so straightforward. If that's the case, let us know, and someone
(probably not me :-) might be able to help out.
Cheers,
Rob
------------------------------
Date: 20 Jul 2006 19:39:04 -0700
From: "Robert Hicks" <sigzero@gmail.com>
Subject: Re: Getting started in PXPerl, i.e how to run a script?
Message-Id: <1153449539.142496.95110@p79g2000cwp.googlegroups.com>
Markus H=E4nchen wrote:
> > I don't run Perl on Windows myself, but ActiveState seems to be what
> > everybody on Windows uses.
> >
> >
> > Chris Mattern
> > on Windows uses.
>
> Thanks, I am going to try it out on the next machine.
> Markus
The ActiveState version will register .pl extensions to the Perl exe
and you won't have to type "perl someprogram.pl" just "someprogram.pl".
:Robert
------------------------------
Date: 20 Jul 2006 17:40:42 -0700
From: "Jack" <jack_posemsky@yahoo.com>
Subject: how to get perl to untar a tar.gz to a different directory
Message-Id: <1153442442.697888.16530@i42g2000cwa.googlegroups.com>
Hello
I am running gunzip.exe and tar.exe for DOS...with perl commands,
Gunzip let's me unzip the tar to a different directory as follows:
system("gunzip c:\\temp2\\$filelistarray[$u]");
system("tar -xvf c:\\temp2\\$filelistarray[$u]");
BUT how do I untar AND gunzip out to a different directory ?? If I
cant, what can I do from the command line in DOS ?? WINZIP command
line add on of course doesnt support this capability..I find after
buying..
I realize this is the PERL forum but I figured since I post here a lot
the folks would know this..
Thanks,
Jack
------------------------------
Date: 20 Jul 2006 18:01:28 -0700
From: kenslaterpa@hotmail.com
Subject: Re: how to get perl to untar a tar.gz to a different directory
Message-Id: <1153443688.361606.127480@i42g2000cwa.googlegroups.com>
Jack wrote:
> Hello
>
> I am running gunzip.exe and tar.exe for DOS...with perl commands,
> Gunzip let's me unzip the tar to a different directory as follows:
>
> system("gunzip c:\\temp2\\$filelistarray[$u]");
> system("tar -xvf c:\\temp2\\$filelistarray[$u]");
>
> BUT how do I untar AND gunzip out to a different directory ?? If I
> cant, what can I do from the command line in DOS ?? WINZIP command
> line add on of course doesnt support this capability..I find after
> buying..
> I realize this is the PERL forum but I figured since I post here a lot
> the folks would know this..
>
> Thanks,
> Jack
Probably the simplest solution is to "chdir" to the desired directory
before
issuing the gunzip and tar commands.
By the way, you may want to look at the Perl modules that may be
available.(Archive::Tar; Compress::Zlib). I have used the tar module,
and I believe it
has some limitations with large files (may also be slower).
Ken
------------------------------
Date: Thu, 20 Jul 2006 21:32:48 -0400
From: Sherm Pendley <sherm@Sherm-Pendleys-Computer.local>
Subject: Re: how to get perl to untar a tar.gz to a different directory
Message-Id: <m23bcv3fpb.fsf@Sherm-Pendleys-Computer.local>
"Jack" <jack_posemsky@yahoo.com> writes:
> I am running gunzip.exe and tar.exe for DOS...with perl commands,
> Gunzip let's me unzip the tar to a different directory as follows:
>
> system("gunzip c:\\temp2\\$filelistarray[$u]");
> system("tar -xvf c:\\temp2\\$filelistarray[$u]");
>
> BUT how do I untar AND gunzip out to a different directory ??
Does your tar support the -z option? If so, just run 'tar -xzvf blah.tgz'
to unzip & untar in one step.
> I realize this is the PERL forum but I figured since I post here a lot
> the folks would know this..
Please don't make a habit out of that. A lot of folks here probably *do*
know this, and HTML, and SQL, and a lot of other stuff. That doesn't make
that other stuff on-topic for this group though.
sherm--
--
Web Hosting by West Virginians, for West Virginians: http://wv-www.net
Cocoa programming in Perl: http://camelbones.sourceforge.net
------------------------------
Date: Fri, 21 Jul 2006 01:59:20 +0100
From: ks <ksamp@vp_removeit_.pl>
Subject: Re: How to use a module's @EXPORT array to document its exported objects?
Message-Id: <je90c2h4c74vlcc4n0o1794mpfk5u9475l@4ax.com>
>Snippet of the code
>eval {require NFB::Utilities::Server};
>warn $@ if $@;
>print "Version of NFB::Utilities::Server is
>$NFB::Utilities::Server::VERSION\n";
can't you put the two last lines also in eval statement? if you do
that you simply won't display the version of NFB::Utilities::Server
but as i understood this is what you wanted.
so your code could look like:
eval {
require NFB::Utilities::Server;
print "Version of NFB::Utilities::Server is
$NFB::Utilities::Server::VERSION\n";
};
warn $@ if $@;
you can build one eval statement for every module which can be
installed or not. this way your script could always start and display
some needed information if required modules exist.
best regards
ks
------------------------------
Date: Fri, 21 Jul 2006 01:37:46 GMT
From: "A. Sinan Unur" <1usa@llenroc.ude.invalid>
Subject: Re: How to use a module's @EXPORT array to document its exported objects?
Message-Id: <Xns9806DC1E3A6Dasu1cornelledu@127.0.0.1>
Henry Law <news@lawshouse.org> wrote in news:1153382310.76988.0
@demeter.uk.clara.net:
> I'll do that CPAN search. Thanks, Anno and Sinan.
OK. Here is something that did something somewhat meaningful in one
specific case.
D:\UseNet\clpmisc> cat My\Module.pm
package My::Module;
use Not::Here;
use Not::There::Either;
our $VERSION = 9.123;
our @EXPORT = 'this', 'that', 'and', 'other';
"EOF My\Module.pm"
D:\UseNet\clpmisc> cat my.pl
#!/usr/bin/perl
use strict;
use warnings;
use PPI;
use lib '.';
use Data::Dumper;
my @modules = qw( ./My/Module.pm );
MODULE: for my $module ( @modules ) {
my $doc = PPI::Document->new( $module );
unless ( $doc ) {
warn "Could not load '$doc': $!";
next MODULE;
}
my $export = $doc->find( \&wanted );
my $content = $export->[0]->content;
$content = ( split /=/, $content)[1];
my @exported = eval "$content";
print Dumper \@exported;
}
sub wanted {
my ($token) = $_[1];
return unless $token->isa('PPI::Statement::Variable');
return unless $token->type eq 'our';
return unless $token->variables eq '@EXPORT';
return 1;
}
__END__
D:\UseNet\clpmisc> my
$VAR1 = [
'this',
'that',
'and',
'other'
];
This is flaky. Obviously, it will miss a whole bunch of different ways
of putting things in @EXPORT. However, if the modules in which you are
interested do not contain such cases, you might be able to get some
mileage out of this.
Dunno. Hope it helps.
Sinan
--
A. Sinan Unur <1usa@llenroc.ude.invalid>
(remove .invalid and reverse each component for email address)
comp.lang.perl.misc guidelines on the WWW:
http://augustmail.com/~tadmc/clpmisc/clpmisc_guidelines.html
------------------------------
Date: Fri, 21 Jul 2006 10:53:03 +1000
From: "Sisyphus" <sisyphus1@nomail.afraid.org>
Subject: Re: libstdc++ problem with ExtUtils::MakeMaker
Message-Id: <44c0264f$0$22359$afc38c87@news.optusnet.com.au>
<sherlock@genome.stanford.edu> wrote in message
news:1153405245.002518.162200@s13g2000cwa.googlegroups.com...
> Hi Rob,
>
> Thanks for the reply. Using :
>
> perl -e 'require ExtUtils::Liblist; ExtUtils::Liblist->ext("-lstdc++",
> 1, 1);'
>
> I get:
>
> Potential libraries are '-lstdc++':
> stdc++ not found in /usr/local/lib
> stdc++ not found in /usr/lib
> Note (probably harmless): No library found for -lstdc++
Hmmm ... I get:
Potential libraries are '-lstdc++':
stdc++ not found in /usr/local/lib
stdc++ not found in /lib
'-lstdc++' found at /usr/lib/libstdc++.so.5.0.3
>
> poking around in /usr/lib, I see:
>
> libstdc++-static.a
> libstdc++.6.0.3.dylib*
> libstdc++.6.0.4.dylib*
> libstdc++.6.dylib@ -> libstdc++.6.0.4.dylib
>
> but this is where my ignorance prevents me from knowing if this is what
> I'm looking for.
I'm no expert either but, based upon what I got, I would guess that one of
those dynamic libraries needs to be found - and doesn't get found because
perl doesn't know how it's supposed to ignore certain bits of the extension.
(Otoh, the compiler *does* know all about those extensions, and finds the
correct file in /usr/lib.)
>Poking around a little further, there is also:
>
> /usr/lib/gcc/powerpc-apple-darwin8/4.0.1/libstdc++.dylib
>
> which probably is what I want
It would be handy to know for sure just which file the linker is finding
when the '-lstdc++' switch is supplied. I'm not sure of a way to do that.
>
> I'll also try asking the unix porting group over on the Apple pages,
>
I couldn't see a lot of value in what they came up with .... though my
eyesight is far from perfect :-)
Cheers,
Rob
------------------------------
Date: Thu, 20 Jul 2006 16:42:37 -0700
From: robic0
Subject: Re: Net::Telnet - Library Application
Message-Id: <dv40c21774k77qmdtpqml1ksq21dm8v8dr@4ax.com>
On Mon, 17 Jul 2006 03:04:37 -0700, Joe Smith <joe@inwap.com> wrote:
>Stephan Titard wrote:
>> robic0 escribió:
>>> 759 lines
>>
>> I have used for years the telnet module and never experienced any problem
>
>Did you _HAVE_ to quote the entire article? All 759 lines of it?
This is a late post.
All 759 lines of "it" constitutes all of about 30k.
Whats the problem with quoting all 30k 20 or more times?
That might give you 2/3 of a megabyte to download.
Stay off the ng's because each nominal message is about 4,000 lines of uuenc.
Something your immature ass does'ent know about.
robic0
------------------------------
Date: Thu, 20 Jul 2006 16:48:40 -0700
From: robic0
Subject: Re: Net::Telnet - Library Application
Message-Id: <gb50c2pecf8j1nrvqdfue271j1v44dc2ba@4ax.com>
On Wed, 19 Jul 2006 11:03:39 -0400, Carl Lafferty <laff7430@bellsouth.net> wrote:
>Carl Lafferty wrote:
>> I *think* I can fix it with a kludge of my own but ... well it's late
>> and that is my progress report.
>>
>
>OK, I did fix it. I took the length of the string I expect, multiplied
>by how many and subtracted the number of \x8f's I was going to get
>(which is the same as the number I expect minus 1, grab that, split on
>the \x8f's and done.
>
>Now to take this and turn it into a reasonable facsimile of an online
>card catalog that accesses our database directly.
>
>I love linux/perl when it can save so much $$$$.
>
>Thanks for all the help I got here. I learned a LOT about regex and
>more about perl in general.
I admit, have not read your problem from the beginning.
I know you can use Net::Telnet as a pseudo socket communication device
with the added bennifit of inline trigger callbacks.
I would consider myself an expert on such items. Would your company like
to contract to me for definative hard solution?
Would be the best thing.
robic0
------------------------------
Date: Thu, 20 Jul 2006 17:08:24 -0700
From: robic0
Subject: RXParse
Message-Id: <p960c2173pkcqfeh8vj9ov7ad5lt4pjuq1@4ax.com>
An update, I've got alot of new stuff with this including namespace discrimination.
Alot of new intellgent search options (with namespace preamble option), specific to
all aspects of xml items. I've done this as a preliminary to the search & replace
mega I'm working on. Search uses a new method. Replace will use this. Internally,
any number of XP1 processors will be called.
I have some issues with DTD, especially cdata style conditionals. Always working on
that crap. Want to stay to the standard.
Pretty sure this will be the biggest non-cpan splash you will ever see.
robic0
------------------------------
Date: Thu, 20 Jul 2006 22:10:29 GMT
From: "A. Sinan Unur" <1usa@llenroc.ude.invalid>
Subject: Re: subroutine
Message-Id: <Xns9806B8F95EF8Fasu1cornelledu@127.0.0.1>
usenet@DavidFilmer.com wrote in news:1153432845.843776.303160@i3g2000cwc.googlegroups.com:
> weberw@adelphia.net wrote:
> [ a multi-posted question ]
>
> Please do not multi-post. That is considered very rude in Usenet.
That is my he is in my killfile permanently.
Every question he has posted so far has been multiposted:
http://groups.google.com/groups/profile?enc_user=Hee32RMAAAB3yPvf45KeT4uwH92YEqXUh-kUg4S0n7nbF1Te82ZIng
Sinan
--
A. Sinan Unur <1usa@llenroc.ude.invalid>
(remove .invalid and reverse each component for email address)
comp.lang.perl.misc guidelines on the WWW:
http://augustmail.com/~tadmc/clpmisc/clpmisc_guidelines.html
------------------------------
Date: 20 Jul 2006 15:13:39 -0700
From: usenet@DavidFilmer.com
Subject: Re: subroutine
Message-Id: <1153433619.125520.273740@m73g2000cwd.googlegroups.com>
A. Sinan Unur wrote:
> That is why he is in my killfile permanently.
> Every question he has posted so far has been multiposted:
Ah. Indeed. I will never offer assitance to this person again.
--
David Filmer (http://DavidFilmer.com)
------------------------------
Date: Thu, 20 Jul 2006 18:17:15 -0500
From: Tad McClellan <tadmc@augustmail.com>
Subject: Re: subroutine
Message-Id: <slrnec03nr.ftk.tadmc@magna.augustmail.com>
weberw@adelphia.net <weberw@adelphia.net> wrote:
> while ( my @elements = $sth->fetchrow() ) {
^^^^^^^^
The DBI module does not export a method named fetchrow().
This is not your real code.
> $OT = &calculateOT(emp_hours);
You should not use an ampersand on subroutine calls unless you know
what using an ampersand on subroutine calls does, and what it does
is what you want to do.
Variables in Perl start with a sigil character.
This is not your real code either.
$OT = calculateOT( $emp_hours );
You should consider hiring a programmer to do your programming for you,
you do not appear to have an aptitude for it.
--
Tad McClellan SGML consulting
tadmc@augustmail.com Perl programming
Fort Worth, Texas
------------------------------
Date: Thu, 20 Jul 2006 16:59:01 -0700
From: robic0
Subject: Re: subroutine
Message-Id: <f060c297jelh8odpnqlg92mtup8tgdqrj7@4ax.com>
On Thu, 20 Jul 2006 18:17:15 -0500, Tad McClellan <tadmc@augustmail.com> wrote:
>weberw@adelphia.net <weberw@adelphia.net> wrote:
>
>> while ( my @elements = $sth->fetchrow() ) {
> ^^^^^^^^
>
>The DBI module does not export a method named fetchrow().
>
but he is not looking for an "exported" method, he is calling
id directly with "$sth->fetchrow", which is not what you think,
weather it exists or not.
[snip]
------------------------------
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 9505
***************************************