[26241] in Perl-Users-Digest
Perl-Users Digest, Issue: 8426 Volume: 10
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Fri Sep 16 14:05:28 2005
Date: Fri, 16 Sep 2005 11:05:05 -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 Fri, 16 Sep 2005 Volume: 10 Number: 8426
Today's topics:
Re: FAQ 8.23 How can I open a pipe both to and from a c <crono@cc.gatech.edu>
Re: FAQ 8.23 How can I open a pipe both to and from a c <crono@cc.gatech.edu>
Newbie: Help Substituting from a Hash <nospam@free.fr>
Re: Newbie: Help Substituting from a Hash <josef.moellers@fujitsu-siemens.com>
Re: Newbie: Help Substituting from a Hash <nobull@mail.com>
Re: Newbie: Help Substituting from a Hash <nobull@mail.com>
scalar and hash slices -- is it supposed to work this w <usenet@myname.com>
Re: scalar and hash slices -- is it supposed to work th <ebohlman@omsdev.com>
Re: scalar and hash slices -- is it supposed to work th <usenet@myname.com>
Re: sorting data - hash vs. list (Anno Siegel)
Re: Zombie problem when creating a listening Socket <vikrantREMOVE@DELETEsaysnetsoft.com>
Re: Zombie problem when creating a listening Socket (Anno Siegel)
Re: Zombie problem when creating a listening Socket xhoster@gmail.com
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Fri, 16 Sep 2005 09:49:26 -0400
From: "Omar Zakaria" <crono@cc.gatech.edu>
Subject: Re: FAQ 8.23 How can I open a pipe both to and from a command?
Message-Id: <dgeig1$5ps$1@news-int2.gatech.edu>
"A. Sinan Unur" <1usa@llenroc.ude.invalid> wrote in message
> Post real code! This cannot be the code you are using.
Sorry, but it is. This is why I'm more than a little confused.
Apparently, it works on your machine but not on mine.
In case there was some confusion, I /did/ test the code
I posted to see if the same error appeared as did in the
code I'm using. Since the principle behind them is the
same, I am assuming that there is no difference between
posting the "real" code I have on my machine and the
working "sample" code. If I've made a mistake in
assumptions, then I apologize. I'll post all three hundred
lines of the original script, followed by the nine other
helper scripts it uses, (each just as bulky) just to make
sure.
Though you've just given me an idea. Perhaps I need to,
as you have done, change the flushing on my IO. (You
set $| = 1; this changes the buffering from line to charcter,
if I'm not mistaken.). Or maybe it's that I'm not selecting
my filehandle... can't see how that would change things,
though.
I'll try your code line-for-line, though. If it works, then all
is well and I can figure out why mine doesn't. 'preciate
your time.
> D:\Home\asu1\UseNet\clpmisc> perl -v
>
> This is perl, v5.8.7 built for MSWin32-x86-multi-thread
> (with 7 registered patches, see perl -V for more detail)
>
> > #!/usr/bin/
>
> D:\Home\asu1\UseNet\clpmisc> perl c.pl
> Can't exec /usr/bin/ at c.pl line 1.
>
> #!/usr/bin/perl
>
> use IPC::Open2;
> use strict;
> use warnings;
>
> open2 my $read, my $write, 'cmd.exe'
> or die "Could not open! $!";
>
> select $write;
> $| = 1;
>
> print $write "echo We are the pirates who don't do anything!\n";
> print $write "dir t*/w\n";
>
> print STDOUT while <$read>;
>
> __END__
>
>
> D:\Home\asu1\UseNet\clpmisc> c.pl
> D:\Home\asu1\UseNet\clpmisc> echo We are the pirates who don't do
> anything!
> We are the pirates who don't do anything!
>
> The last print to STDOUT is there so you can actually see the output.
>
> Sinan
------------------------------
Date: Fri, 16 Sep 2005 10:01:13 -0400
From: "Omar Zakaria" <crono@cc.gatech.edu>
Subject: Re: FAQ 8.23 How can I open a pipe both to and from a command?
Message-Id: <dgej63$61n$1@news-int2.gatech.edu>
"Omar Zakaria" <crono@cc.gatech.edu> wrote in message
news:dgeig1$5ps$1@news-int2.gatech.edu...
>
> Though you've just given me an idea. Perhaps I need to,
> as you have done, change the flushing on my IO. (You
> set $| = 1; this changes the buffering from line to charcter,
> if I'm not mistaken.). Or maybe it's that I'm not selecting
> my filehandle... can't see how that would change things,
> though.
>
> I'll try your code line-for-line, though. If it works, then all
> is well and I can figure out why mine doesn't. 'preciate
> your time.
Apologies for the double-post.
Well, turns out your solution doesn't work on my machine
either. Anyone know if there's a problem with the version
of ActiveState perl I'm using?
Here's the feedback from perl -v:
This is perl, v5.6.0 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail).
perl -V seems to indicate that I'm using posix, but I'm
not using PTHREADS... instead, I'm using something
called ITHREADS? I'm not familiar with those. Perhaps
this might be the problem?
As you can see, a very strange problem. It's been
bothering me for quite some time.
--
Omar Zakaria
------------------------------
Date: Fri, 16 Sep 2005 14:35:17 +0200
From: Elisa Francesca Roselli <nospam@free.fr>
Subject: Newbie: Help Substituting from a Hash
Message-Id: <432abc05$0$14269$636a55ce@news.free.fr>
I have some strings in French that have had all the diacritical marks
removed and substituted with special multi-character codes.
I need to get these strings output as natural language, with their
diacriticals restored.
What I'm trying to do is to use a hash, with the special code as the
hash key and the natural character as the value. Example:
%q_format = ('\\`e' => 'è', #plotting \`e to è
'\\\'e' => 'é', #plotting \'e to é
'\\^e' => 'ê;', #plotting \^e to ê
'\\`a' => 'à', #plotting \`a to à
'\\^o' => 'ô' ); #plotting \^o to ô
So lets say I have a French-language string in a scalar $Fr. I want to
do something like:
foreach $key(keys %q_format) {
$Fr =~s/$q_format{key}/$q_format{value}/g;
}
to substitute the key with the value. So if $Fr contains
"Vous n'avez pas l'acc\`es en \'ecriture sur "%S"
I want to see
"Vous n'avez pas l'accès en écriture sur "%S"
But that isn't working. The string outputs exactly as it went in.
What am I doing wrong?
Many thanks for your patience, to all who can assist,
Elisa Francesca Roselli
Ile de France
------------------------------
Date: Fri, 16 Sep 2005 14:51:45 +0200
From: Josef Moellers <josef.moellers@fujitsu-siemens.com>
Subject: Re: Newbie: Help Substituting from a Hash
Message-Id: <dgeeti$6vq$1@nntp.fujitsu-siemens.com>
Elisa Francesca Roselli wrote:
> I have some strings in French that have had all the diacritical marks=20
> removed and substituted with special multi-character codes.
>=20
> I need to get these strings output as natural language, with their=20
> diacriticals restored.
>=20
> What I'm trying to do is to use a hash, with the special code as the=20
> hash key and the natural character as the value. Example:
>=20
> %q_format =3D ('\\`e' =3D> '=E8', #plotting \`e to =E8
> '\\\'e' =3D> '=E9', #plotting \'e to =E9
> '\\^e' =3D> '=EA;', #plotting \^e to =EA
> '\\`a' =3D> '=E0', #plotting \`a to =E0
> '\\^o' =3D> '=F4' ); #plotting \^o to =F4
>=20
>=20
> So lets say I have a French-language string in a scalar $Fr. I want to =
> do something like:
>=20
> foreach $key(keys %q_format) {
> $Fr =3D~s/$q_format{key}/$q_format{value}/g;
> }
>=20
> to substitute the key with the value. So if $Fr contains
>=20
> "Vous n'avez pas l'acc\`es en \'ecriture sur "%S"
>=20
> I want to see
>=20
> "Vous n'avez pas l'acc=E8s en =E9criture sur "%S"
> But that isn't working. The string outputs exactly as it went in.
>=20
> What am I doing wrong?
Remember that $q_format{...} is the value, while ... is the key.
If you replace $q_format{key} with $key and $q_format{value} with=20
$q_format{$key}, it should work.
foreach $key (keys %q_format) {
$Fr =3D~s/$key/$q_format{$key}/g;
}
Josef
--=20
Josef M=F6llers (Pinguinpfleger bei FSC)
If failure had no penalty success would not be a prize
-- T. Pratchett
------------------------------
Date: Fri, 16 Sep 2005 14:05:07 +0100
From: Brian McCauley <nobull@mail.com>
Subject: Re: Newbie: Help Substituting from a Hash
Message-Id: <dgefu4$e4$1@redhat2.bham.ac.uk>
Josef Moellers wrote:
> Elisa Francesca Roselli wrote:
>
>> %q_format = ('\\`e' => 'è', #plotting \`e to è
>> '\\\'e' => 'é', #plotting \'e to é
>> '\\^e' => 'ê;', #plotting \^e to ê
>> '\\`a' => 'à', #plotting \`a to à
>> '\\^o' => 'ô' ); #plotting \^o to ô
>>
> Remember that $q_format{...} is the value, while ... is the key.
> If you replace $q_format{key} with $key and $q_format{value} with
> $q_format{$key}, it should work.
>
> foreach $key (keys %q_format) {
> $Fr =~s/$key/$q_format{$key}/g;
> }
You are forgetting that ^ is meta in regex.
Also $key is being declared in an inappropriately wide scope:
foreach my $key (keys %q_format) {
$Fr =~ s/\Q$key/$q_format{$key}/g;
}
Note also that conventional wisdom would be to avoid the loop
$Fr =~ s/([^`'][aeiou])/ $q_format{$1} || $1 /eg;
You should consdier using conventional entities like 'é' rather
than your home-rolled convention.
------------------------------
Date: Fri, 16 Sep 2005 14:07:38 +0100
From: Brian McCauley <nobull@mail.com>
Subject: Re: Newbie: Help Substituting from a Hash
Message-Id: <dgeg2q$ii$1@redhat2.bham.ac.uk>
Brian McCauley wrote:
> $Fr =~ s/([^`'][aeiou])/ $q_format{$1} || $1 /eg;
Er no,
$Fr =~ s/([`'^][aeiou])/ $q_format{$1} || $1 /eg;
------------------------------
Date: Fri, 16 Sep 2005 11:06:41 -0400
From: Richard Harman <usenet@myname.com>
Subject: scalar and hash slices -- is it supposed to work this way?
Message-Id: <pan.2005.09.16.15.06.41.414122@myname.com>
I think I found a bug in perl when dealing with hash slices. For some
reason, scalar is interpreting the returned list from a hash slice as a
'scalar comma expression' and is returning the final element (perldoc -f
scalar, 3rd paragraph). Is this the way it's supposed to work? (If this
is not the correct place to ask, where do I go?)
# data
my %hash = ( first=>["Studly","Caps"], second=>["Make","Things","Readable"]);
my $hashref = \%hash;
# slicing the hashref for values (the arrays)
my @array_refs = @$hashref{qw(first second)};
# print out the memory addresses
printf "Contents of hash:\n";
foreach my $key (keys %hash) { print "$key => $hash{$key}\n"; };
printf("Scalar array_refs: %s\n",scalar @array_refs);
# now why doesn't this return 2? A slice is just a list, right?
printf("Scalar hashref slice WRONG: %s\n",scalar @$hashref{qw(first second)});
# but this works (forced list interpolation)
printf("Scalar hashref forced list interpolation RIGHT: %s\n",
scalar @{[@$hashref{qw(first second)}]});
------------------------------
Date: 16 Sep 2005 15:23:08 GMT
From: Eric Bohlman <ebohlman@omsdev.com>
Subject: Re: scalar and hash slices -- is it supposed to work this way?
Message-Id: <Xns96D36B5B839DFebohlmanomsdevcom@130.133.1.4>
Richard Harman <usenet@myname.com> wrote in
news:pan.2005.09.16.15.06.41.414122@myname.com:
> I think I found a bug in perl when dealing with hash slices. For some
May people have thought they found bugs in perl. Few of them really
have.
> reason, scalar is interpreting the returned list from a hash slice as
> a 'scalar comma expression' and is returning the final element
> (perldoc -f scalar, 3rd paragraph). Is this the way it's supposed to
> work? (If this is not the correct place to ask, where do I go?)
Yes, it's the way it's supposed to work. The entry "What is the
difference between a list and an array?" in perlfaq4 is a good place to
start.
> # data
> my %hash = ( first=>["Studly","Caps"],
> second=>["Make","Things","Readable"]); my $hashref = \%hash;
>
> # slicing the hashref for values (the arrays)
> my @array_refs = @$hashref{qw(first second)};
>
> # print out the memory addresses
> printf "Contents of hash:\n";
> foreach my $key (keys %hash) { print "$key => $hash{$key}\n"; };
>
> printf("Scalar array_refs: %s\n",scalar @array_refs);
@array_refs is an array, and so when put in scalar context evaluates to
the number of elements. That's a property of *arrays* in particular.
>
> # now why doesn't this return 2? A slice is just a list, right?
> printf("Scalar hashref slice WRONG: %s\n",scalar @$hashref{qw(first
> second)});
Your slice is indeed a list, but it's not an array, so it doesn't have
that particular (peculiar?) property.
> # but this works (forced list interpolation)
> printf("Scalar hashref forced list interpolation RIGHT: %s\n",
> scalar @{[@$hashref{qw(first second)}]});
You've actually created an array here.
------------------------------
Date: Fri, 16 Sep 2005 11:45:19 -0400
From: Richard Harman <usenet@myname.com>
Subject: Re: scalar and hash slices -- is it supposed to work this way?
Message-Id: <pan.2005.09.16.15.45.18.996037@myname.com>
On Fri, 16 Sep 2005 15:23:08 +0000, Eric Bohlman wrote:
> Richard Harman <usenet@myname.com> wrote in
> news:pan.2005.09.16.15.06.41.414122@myname.com:
>
>> I think I found a bug in perl when dealing with hash slices. For some
>
> May people have thought they found bugs in perl. Few of them really
> have.
I suspected as much :)
>> reason, scalar is interpreting the returned list from a hash slice as
>> a 'scalar comma expression' and is returning the final element
>> (perldoc -f scalar, 3rd paragraph). Is this the way it's supposed to
>> work? (If this is not the correct place to ask, where do I go?)
>
> Yes, it's the way it's supposed to work. The entry "What is the
> difference between a list and an array?" in perlfaq4 is a good place to
> start.
Wow, according to perlfaq4 I'm doing all sorts of bad things, like
($exits) = grep { m/pattern/ } @array;
I really should read perlfaqX more often. One would think reading the
various ORA books would glean such information. Although, what I was
trying to "efficiently" do has turned out to be inefficient, so I think I
get to chuck this thought process entirely :) Thanks for the pointer to
perlfaq4.
<snip>
------------------------------
Date: 16 Sep 2005 10:28:54 GMT
From: anno4000@lublin.zrz.tu-berlin.de (Anno Siegel)
Subject: Re: sorting data - hash vs. list
Message-Id: <dge6p6$n1k$1@mamenchi.zrz.TU-Berlin.DE>
Sherm Pendley <sherm@dot-app.org> wrote in comp.lang.perl.misc:
> "John W. Kennedy" <jwkenne@attglobal.net> writes:
[...]
> > plus the fact that
> > Perl doesn't actually implement objects, so that all the attributes
> > have to be buried in a hash or something.
>
> That's annoying, yes - it's an implementation detail I'd rather not have
> to worry about. But writing $self->{'foo'} instead of just $foo isn't
> *that* big a deal.
>
> Don't get me wrong - I'm not trying to say Perl's an ideal OOP language.
> There's certainly plenty of room for improvement. But it's current flaws
> aren't all that major; with a little work and self-discipline you can
> implement a clean OO design in Perl.
On the other hand, Perls "soft" implementation of OO lets us experiment
with picking just some OO features while ignoring others.
A good example is the Exporter module. It uses inheritance to let
the user access its import function (which, of course, can't be
imported). Otherwise, no-one would call Exporter OO -- it isn't.
Another example is using a DESTROY method to keep an eye on variables
that could be overwritten, but shouldn't. %SIG handlers and overload
methods are cases in point. You can bless the coderef stored there
into an otherwise unused class which holds a DESTROY method. Then,
when another part of the program overwrites the handler without keeping
a copy, DESTROY will be triggered and can complain. If a copy is kept,
as with "local $SIG{ ...} = ...", DESTROY is not triggered, but then
we may assume they know what they are doing.
This kind of semi-OO is not possible with strict OO languages.
Anno
--
If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the
"Reply" at the bottom of the article headers.
------------------------------
Date: Fri, 16 Sep 2005 16:30:09 +0530
From: vikrant <vikrantREMOVE@DELETEsaysnetsoft.com>
Subject: Re: Zombie problem when creating a listening Socket
Message-Id: <dge8na$v6u$1@domitilla.aioe.org>
Thanks for correcting me.But one problem is still there.The Socket no more listening to next request
that means forking could not happened.
Suggest me the changes needs to do.So,that the code work properly.
The Code is:-
-----------------------------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use IO::Select;
use IO::Socket::INET;
my($pid,$sBuffer,$sData_Recevied,$iZombie);
my $sListening_Socket = new IO::Socket::INET (LocalPort => 36545,
Proto => "tcp",
Listen => 4,
Type => SOCK_STREAM
) or die "Could not create socket";
sub logmsg { print "$0 $$: @_ at ", scalar localtime, "\n" }
use POSIX ":sys_wait_h";
sub REAPER
{
while (($iZombie = waitpid(-1,WNOHANG)) > 0)
{
logmsg "reaped $iZombie" . ($? ? " with exit $?" : '');
}
$SIG{CHLD} = \&REAPER; # loathe sysV
}
$SIG{CHLD} = \&REAPER;
while (my $sNew_Socket = $sListening_Socket->accept())
{
if (!defined($pid = fork()))
{
logmsg "cannot fork: $!";
}
elsif ($pid)
{
logmsg "begat $pid";
next;
}
my $obSelected_Socket = IO::Select->new($sNew_Socket);
while( $obSelected_Socket->can_read(20))
{
sysread($sNew_Socket,$sBuffer,1<<10);
$sData_Recevied.=$sBuffer;
if($sBuffer =~/\/message_end>/)
{
last;
}
}
$sNew_Socket->send($sData_Recevied);
close($sListening_Socket);
exit;
} continue {
close($sNew_Socket);
}
-----------------------------------------------------------------------------------------
Output is
-----------------------------------------------------------
server.pl 3618: begat 3620 at Fri Sep 16 16:23:37 2005
server.pl 3618: reaped 3620 at Fri Sep 16 16:23:37 2005
-----------------------------------------------------------
With Regards
Vikrant
------------------------------
Date: 16 Sep 2005 12:13:40 GMT
From: anno4000@lublin.zrz.tu-berlin.de (Anno Siegel)
Subject: Re: Zombie problem when creating a listening Socket
Message-Id: <dgectk$r9c$1@mamenchi.zrz.TU-Berlin.DE>
vikrant <vikrantREMOVE@DELETEsaysnetsoft.com> wrote in comp.lang.perl.misc:
Please show an attribution and some context with your reply.
> Thanks for correcting me.But one problem is still there.The Socket no
> more listening to next request
> that means forking could not happened.
>
> Suggest me the changes needs to do.So,that the code work properly.
I realize English is not your first language, but that sounds pretty
rude. I'm not your servant.
I can't spend the time needed to completely debug this still rather
messy program, but it seems that after the first fork the kid process
is running the main loop instead of the parent. If you comment out
the lines
# close($sListening_Socket);
# exit;
in your code you will be able to connect multiple times to your
server, but look at the log messages:
./ttt 30280: begat 30282 at Fri Sep 16 13:49:32 2005
./ttt 30282: begat 30284 at Fri Sep 16 13:50:08 2005
./ttt 30280: begat 30286 at Fri Sep 16 13:50:20 2005
Notice how the PID of the "parent"-process changes. That is not how
a server normally runs. The parent is supposed to accept() all
connections and fork off a kid to handle the actual transaction, so
the first PID should be the same in all instances.
> The Code is:-
> -----------------------------------------------------------------------------------------
> #!/usr/bin/perl -w
>
> use strict;
> use IO::Select;
> use IO::Socket::INET;
>
> my($pid,$sBuffer,$sData_Recevied,$iZombie);
This is better, but you're only halfway there.
Lexical variables should be declared as close to their first use as
possible, not all in one place. You noticed how the double use of
the variable $pid in REAPER and the main program messed up your earlier
version. The same can still happen when you declare the lexical $pid
once for the rest of the program. Declare it where it is used, not
before. The same goes for the other variables.
> my $sListening_Socket = new IO::Socket::INET (LocalPort => 36545,
> Proto => "tcp",
> Listen => 4,
> Type => SOCK_STREAM
> ) or die "Could not create socket";
>
> sub logmsg { print "$0 $$: @_ at ", scalar localtime, "\n" }
> use POSIX ":sys_wait_h";
> sub REAPER
> {
>
> while (($iZombie = waitpid(-1,WNOHANG)) > 0)
> {
> logmsg "reaped $iZombie" . ($? ? " with exit $?" : '');
> }
> $SIG{CHLD} = \&REAPER; # loathe sysV
> }
>
> $SIG{CHLD} = \&REAPER;
>
>
> while (my $sNew_Socket = $sListening_Socket->accept())
> {
> if (!defined($pid = fork()))
> {
> logmsg "cannot fork: $!";
> }
> elsif ($pid)
> {
> logmsg "begat $pid";
> next;
> }
> my $obSelected_Socket = IO::Select->new($sNew_Socket);
>
> while( $obSelected_Socket->can_read(20))
> {
> sysread($sNew_Socket,$sBuffer,1<<10);
> $sData_Recevied.=$sBuffer;
> if($sBuffer =~/\/message_end>/)
> {
> last;
> }
> }
>
> $sNew_Socket->send($sData_Recevied);
> close($sListening_Socket);
> exit;
Comment out the above two lines and watch what's happening.
> } continue {
> close($sNew_Socket);
> }
Anno
--
If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the
"Reply" at the bottom of the article headers.
------------------------------
Date: 16 Sep 2005 16:02:11 GMT
From: xhoster@gmail.com
Subject: Re: Zombie problem when creating a listening Socket
Message-Id: <20050916120210.992$xq@newsreader.com>
vikrant <vikrantREMOVE@DELETEsaysnetsoft.com> wrote:
> hi
>
> Now, I have made some changes in the code but still facing the
> problem.This time the socket no more listening to client resquests.
You had code that was (apparently) working fine, other than that it left
zombies. Why did you competely re-write that code into this mess?
Most likely, all you had to do was add $SIG{ CHLD} = 'IGNORE'; near the top
of your code, and leave the rest of the code unchanged.
<snip tangled mess>
Xho
--
-------------------- http://NewsReader.Com/ --------------------
Usenet Newsgroup Service $9.95/Month 30GB
------------------------------
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 8426
***************************************