[26002] in Perl-Users-Digest
Perl-Users Digest, Issue: 8221 Volume: 10
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Sat Jul 2 06:05:36 2005
Date: Sat, 2 Jul 2005 03: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 Sat, 2 Jul 2005 Volume: 10 Number: 8221
Today's topics:
How do I implement open(FOO, "foo |") with fork()? <fishfry@your-mailbox.com>
remove sequence <a@cuhk.edu.hk>
Re: remove sequence <john@castleamber.com>
Re: remove sequence <a@cuhk.edu.hk>
Re: remove sequence <john@castleamber.com>
Re: remove sequence <thelma@alpha2.csd.uwm.edu>
Re: remove sequence <thepoet_nospam@arcor.de>
Re: SOAP::Lite proxied <No_4@dsl.pipex.com>
validating Xml in perl <vikrantREMOVE@DELETEsaysnetsoftDDDD.com>
Re: validating Xml in perl <nobull@mail.com>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Sat, 02 Jul 2005 00:59:31 -0700
From: fishfry <fishfry@your-mailbox.com>
Subject: How do I implement open(FOO, "foo |") with fork()?
Message-Id: <fishfry-46F3E6.00593102072005@comcast.dca.giganews.com>
What I mean is, when I call fork(), what is the sequence of fd
manipulations to get the output of the child process redirected so that
the parent can read it?
------------------------------
Date: Sat, 2 Jul 2005 10:27:06 +0800
From: "Ross" <a@cuhk.edu.hk>
Subject: remove sequence
Message-Id: <da4u2a$168n$1@justice.itsc.cuhk.edu.hk>
Dear All,
For a file with many records like follows, I would like to remove each
record, if any, containing "XXXXX and the ATCCAAT... follows". If the
sequence is a single line, i can just simply use
if (line =~ ^>.*)
if (line =~ (.*)X(.*) )
newline = $1;
anybody has good idea to solve the problem? thanks in advance
>9P01P10A.y putative DD1A protein [Oryza sativa (japonica
>cultivar-group)] HSP:949
GAACAATTAGTATAAACTTTAGTTGAATCTCGTTACTATATTAGCTTCGG
AGCTCAATTACAAACAGCTAGCAAAAAATGCCAGGTCCCCCATAAAAGAA
ACCATCATGTTCATAATCAGACACACGGTAGCAATTTGATATATATCCGA
GAGCAGAATTGATTTGATGGGTGTTGCCGCCTGCATCAAAAAACTTGACG
CCACTAAATGATGCAGCGTTTTTGATTGGAGCATTCCCACTGCCCATCGG
AGGACTTGGTTTATGTCCCTTTTTCAAGGCATAGCCACCAAACATTATTG
TCACTGGTTTATTTGACAAGCTTGTAAACAGAGATCTTGGATAGTAACCT
GTAAGTCTGGCTTCACCATTAAACCCATAGTAGACTTGCCAATCACCAGA
AATTTGATCCTTGGATACTCTGACTGTAGTGTATCGTTTGTCGCTAGAGG
TGGTGGAAACAGGGTTAATCACCATTCCTGGAACGATTTCTGAGCTAAAT
ACACTTTCGAATCCAGGACAACGCATATCAGGACAGGCATTAGATCCTTG
AGTAAACCAAGTACTGAAGTGCGTCTGTGAATCATTGTATGATTCAGGCT
CAATATTCCATCCAGCTATAACATTATTTATGGCGGATGCTTCATCCTTA
TTATAAATCGAAATGAAACCTCCTGTTTGTTGTCCATGCTCTAGATTAAA
GCATAAACATCCATGGTGGCCTCTACTCCATAATACGTTATAGCATTATC
TGAAGGACCCCATCCATATACTGCAAGATACAACGTGCCAGCTTGATTTG
ATTCATGACCCGACGAAGATAAATTCACATCAAGTATAAGGGGCATCAAT
GTTTGCCATTTCTTTTGGACCTCTTCTTCCATAGGAGGGAAGCAACTCCT
ACTGTTTGACTACCAAGGAACACACACAGAGCAGTGCAGATTGATTAAAA
ATTTCTCCATATTATATTTGGGGATGGAGAGGGTATATGTTTGAGTTCCC
CGGCGTTAGGCCGATTTCCGGGTACACAAAATGCGGGCTTCCGAGAAAAA
AAATTCCCCCAACCTTGGATTTGTTTTTTTTTTTCTCTTCTTCTTCTACT
CTATTTTTATTTCTTGTGTTTGTTTCTGTACTTTTCTTGTTGTTTTTTGT
GTGTTCTTTTTGTTGTGTTTGTTTTTTTTCTTTTCTTTTTGTTTTTATGT
ATCTATCCTTTCTTATTGTTTGTATTTTTTTTTTGTTATTTTTGTATGTT
TTCTTTGTTGTGTTATTTTTTTGGTTTTCTTTTTTTGTTTTTATCACTTT
CTCTTTGTATTGAGTGCTTTTCTTGTTTTTATTTTGTTGATTCTTTTGTC
TTGTCTCTGTCTTTTTTTTCCGTATATGCTTTGTTTGTTTCTTATCCTTT
GCTTG
>9P01P10B.y prolamin precursor (clone pX24) - rice emb|CAA37850.1|
>prolamin [Oryza sativa (japonica cultivar-group)] HSP:418
GTTGCTATGAAAGCACTTTATTTCTATTTATATCACCCAAAGTTTCACAT
GTCACATATGATGATATCTGAGCTTATTTTTAACTTCCGAACCACTATAC
TGTTAAAACTCATTACAAGACACCGCCAAGGGTGGTAATGGTACTGGGTG
CACCATAGTACCTAGGGTAGATACCATATCTAGATGGCACGTTAAAAGCC
AATAGAGCTTGAGCTTGAGCCAGATTCCGATCAAAGTAGAGATCACCAAA
CTGCTGGAGTTGTAGCTGCTGCGCTATGGCCTGAACAATGTTAATGTCCT
GATAGTGAGATTGTTGCGCCACCAGCGCGAGATGTTGCCAGACTTGGTTG
TTTCTCAGTTGAAACGCAGCTGATTGCAAGAAGGGGCTTGCCGCTATGCC
ATACTGCTGCCTTACGAACTCATTATATGGGCTAAGCACCTGTTGCTGTA
GCAGGACAGGCGACTGCAGCTGATATTGCCTATAACTTTGACCTAAAACA
TCAAACTGCGCAGAGGCGCTGCATGCAGCAATAGCAAGGAGAGCAAAGAC
GAAAATGATCTTCATTGCTGCGGGACACTANATCTTTCTATTTTTCTGTA
TAATGCTTGAACTGTGTGAACGATCXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCTCTTCAAT
CTCGGGAANNNNNTGTNGGGGTGTTGGGAAATCCCCCCCTTGTTGGGGTT
TTTCTTGGTTAAACACAAGTGTCCCTTCTCTTTAAAAAAAACCCCTTTTC
CTGTTGGGGGGGTNNTTTTTTTTTTTTTCTTTTTTTTTTTTTTNTTTTTT
TCCTTTTTTTTTTTTTTTTTTTTTTCTTTTTGTTCCTTTCTTGTTTCTGT
TTCTCTTTTTTTTTTTTTTTTTTTTTTTGTTTTCTTTTTTTTTTTTTCTG
------------------------------
Date: 2 Jul 2005 04:05:49 GMT
From: John Bokma <john@castleamber.com>
Subject: Re: remove sequence
Message-Id: <Xns9686EAF3FA39Dcastleamber@130.133.1.4>
"Ross" <a@cuhk.edu.hk> wrote:
> Dear All,
> For a file with many records like follows, I would like to remove each
> record, if any, containing "XXXXX and the ATCCAAT... follows". If the
> sequence is a single line, i can just simply use
>
> if (line =~ ^>.*)
> if (line =~ (.*)X(.*) )
> newline = $1;
>
> anybody has good idea to solve the problem? thanks in advance
read either record for record, or slurp everything in one scalar and try to
match records.
--
John Small Perl scripts: http://johnbokma.com/perl/
Perl programmer available: http://castleamber.com/
Happy Customers: http://castleamber.com/testimonials.html
------------------------------
Date: Sat, 2 Jul 2005 12:33:13 +0800
From: "Ross" <a@cuhk.edu.hk>
Subject: Re: remove sequence
Message-Id: <da55eo$17hc$1@justice.itsc.cuhk.edu.hk>
"John Bokma" <john@castleamber.com> wrote in message
news:Xns9686EAF3FA39Dcastleamber@130.133.1.4...
> "Ross" <a@cuhk.edu.hk> wrote:
>
>> Dear All,
>> For a file with many records like follows, I would like to remove each
>> record, if any, containing "XXXXX and the ATCCAAT... follows". If the
>> sequence is a single line, i can just simply use
>>
>> if (line =~ ^>.*)
>> if (line =~ (.*)X(.*) )
>> newline = $1;
>>
>> anybody has good idea to solve the problem? thanks in advance
>
> read either record for record, or slurp everything in one scalar and try
> to
> match records.
>
> --
> John Small Perl scripts: http://johnbokma.com/perl/
> Perl programmer available: http://castleamber.com/
> Happy Customers: http://castleamber.com/testimonials.html
>
Thanks John. However, each record is not a single-line format and it
encounters an embarrassing situation that one doesn't know how many X's
there are. On the other hand, i don't know how to read character by
character in PERL, thanks.
------------------------------
Date: 2 Jul 2005 06:22:13 GMT
From: John Bokma <john@castleamber.com>
Subject: Re: remove sequence
Message-Id: <Xns9687DEDE77C9castleamber@130.133.1.4>
"Ross" <a@cuhk.edu.hk> wrote:
> "John Bokma" <john@castleamber.com> wrote in message
> Thanks John. However, each record is not a single-line format and it
> encounters an embarrassing situation that one doesn't know how many
> X's there are.
I was aware of that. What might work is:
open my $fh, $filename or die ...
my $record = '';
while ( my $line = <$fh> ) {
if ( $line =~ /^begin of a new record/ and length $record ) {
# check if it has XXXX
# and if so, drop it
$record = '';
}
$record .= $line;
}
close $fh or die ...
if ( length $record ) {
# check if it has XXXX
# and if so, drop it
}
( BTW: the language is Perl the interpreter is perl, there is no such
thing as PERL )
--
John Small Perl scripts: http://johnbokma.com/perl/
Perl programmer available: http://castleamber.com/
Happy Customers: http://castleamber.com/testimonials.html
------------------------------
Date: 2 Jul 2005 06:48:51 GMT
From: Thelma Lubkin <thelma@alpha2.csd.uwm.edu>
Subject: Re: remove sequence
Message-Id: <da5dcj$2da$1@uwm.edu>
Ross <a@cuhk.edu.hk> wrote:
: Dear All,
: For a file with many records like follows, I would like to remove each
: record, if any, containing "XXXXX and the ATCCAAT... follows". If the
: sequence is a single line, i can just simply use
: if (line =~ ^>.*)
: if (line =~ (.*)X(.*) )
: newline = $1;
: anybody has good idea to solve the problem? thanks in advance
I'm not sure that I'm interpreting what you're trying to remove
correctly, but is this perhaps what you're looking for?
#!/usr/bin/perl -w
use strict;
open RD, "atcx" or die $!, " Couldn't open input file\n";
# atcx is the file of lines that you're trying to process
my @cleanlines = ();
my $truline = "";
foreach (<RD>)
{ my $line = $_;
chomp $line;
if($line =~ /^>.*/)
{ if($truline ne "")
{ push @cleanlines,$truline; # Add next cleaned line when
$truline = ""; # signal for new line [>] is found
}
}
else
{ $line =~ s/(.*)X.*/$1/;
$truline .= $line."\n"; # Append good part of line
}
}
if($truline ne "") { push @cleanlines,$truline; }
print "\n\n\n";
foreach(@cleanlines) { print "$_\n\n"; }
print "\n";
You might be trying to go even further and skip everything from the
first X to the next new line signal, in which case you'd stop
appending after that first X and use the loop only to find the next
>, and then start the process again for the next line
--thelma
------------------------------
Date: Sat, 02 Jul 2005 08:50:26 +0200
From: Christian Winter <thepoet_nospam@arcor.de>
Subject: Re: remove sequence
Message-Id: <42c63924$0$22772$9b4e6d93@newsread2.arcor-online.net>
Ross wrote:
> Dear All,
> For a file with many records like follows, I would like to remove each
> record, if any, containing "XXXXX and the ATCCAAT... follows". If the
> sequence is a single line, i can just simply use
>
> if (line =~ ^>.*)
> if (line =~ (.*)X(.*) )
> newline = $1;
>
> anybody has good idea to solve the problem? thanks in advance
If I understand your question right, you want to drop
all records containing "XXXXXsomthinginbetweenATCCAAT".
For this case, I'd read in record by record (a nested
while comes in handy for that) and do a pattern match with
the /s modifier, that tells perl to treat strings as single
line even if they contain newlines (see "perldoc perlre"
for details).
I've put together a small example:
#!/path/to/perl
use strict;
use warnings;
my $header = "";
my $data = "";
while(<DATA>) {
if( /^>/ ) {
$header .= $_;
} else {
$data .= $_;
innerloop: while( <DATA> ) {
if( /^>/ ) { # a new record starts
process_record( $header, $data );
$header = $_;
$data = "";
last innerloop;
} else {
$data .= $_;
}
}
}
}
sub process_record
{
my( $head, $dat ) = @_;
return if( $dat =~ /XXXXX.*ATCCAAT/s ); # drop if match
print $head, $dat; # print valid record
}
__DATA__
>9P01P10B.y prolamin precursor (clone pX24) - rice emb|CAA37850.1|
>prolamin [Oryza sativa (japonica cultivar-group)] HSP:418
GTTGCTATGAAAGCACTTTATTTCTATTTATATCACCCAAAGTTTCACAT
GTCACATATGATGATATCTGAGCTTATTTTTAACTTCCGAACCACTATAC
TGTTAAAACTCATTACAAGACACCGCCAAGGGTGGTAATGGTACTGGGTG
CACCATAGTACCTAGGGTAGATACCATATCTAGATGGCACGTTAAAAGCC
AATAGAGCTTGAGCTTGAGCCAGATTCCGATCAAAGTAGAGATCACCAAA
CTGCTGGAGTTGTAGCTGCTGCGCTATGGCCTGAACAATGTTAATGTCCT
GATAGTGAGATTGTTGCGCCACCAGCGCGAGATGTTGCCAGACTTGGTTG
TTTCTCAGTTGAAACGCAGCTGATTGCAAGAAGGGGCTTGCCGCTATGCC
ATACTGCTGCCTTACGAACTCATTATATGGGCTAAGCACCTGTTGCTGTA
GCAGGACAGGCGACTGCAGCTGATATTGCCTATAACTTTGACCTAAAACA
TCAAACTGCGCAGAGGCGCTGCATGCAGCAATAGCAAGGAGAGCAAAGAC
GAAAATGATCTTCATTGCTGCGGGACACTANATCTTTCTATTTTTCTGTA
TAATGCTTGAACTGTGTGAACGATCXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCTCTTCAAT
CTCGGGAANNNNNTGTNGGGGTGTTGGGAAATCCCCCCCTTGTTGGGGTT
TTTCTTGGTTAAACACAAGTGTCCCTTCTCTTTAAAAAAAACCCCTTTTC
CTGTTGGGGGGGTNNTTTTTTTTTTTTTCTTTTTTTTTTTTTTNTTTTTT
TCCTTTTTTTTTTTTTTTTTTTTTTCTTTTTGTTCCTTTCTTGTTTCTGT
TTCTCTTTTTTTTTTTTTTTTTTTTTTTGTTTTCTTTTTTTTTTTTTCTG
>9P01P10A.y putative DD1A protein [Oryza sativa (japonica
>cultivar-group)] HSP:949
GAACAATTAGTATAAACTTTAGTTGAATCTCGTTACTATATTAGCTTCGG
AGCTCAATTACAAACAGCTAGCAAAAAATGCCAGGTCCCCCATAAAAGAA
ACCATCATGTTCATAATCAGACACACGGTAGCAATTTGATATATATCCGA
GAGCAGAATTGATTTGATGGGTGTTGCCGCCTGCATCAAAAAACTTGACG
CCACTAAATGATGCAGCGTTTTTGATTGGAGCATTCCCACTGCCCATCGG
AGGACTTGGTTTATGTCCCTTTTTCAAGGCATAGCCACCAAACATTATTG
TCACTGGTTTATTTGACAAGCTTGTAAACAGAGATCTTGGATAGTAACCT
GTAAGTCTGGCTTCACCATTAAACCCATAGTAGACTTGCCAATCACCAGA
AATTTGATCCTTGGATACTCTGACTGTAGTGTATCGTTTGTCGCTAGAGG
TGGTGGAAACAGGGTTAATCACCATTCCTGGAACGATTTCTGAGCTAAAT
ACACTTTCGAATCCAGGACAACGCATATCAGGACAGGCATTAGATCCTTG
AGTAAACCAAGTACTGAAGTGCGTCTGTGAATCATTGTATGATTCAGGCT
CAATATTCCATCCAGCTATAACATTATTTATGGCGGATGCTTCATCCTTA
TTATAAATCGAAATGAAACCTCCTGTTTGTTGTCCATGCTCTAGATTAAA
GCATAAACATCCATGGTGGCCTCTACTCCATAATACGTTATAGCATTATC
TGAAGGACCCCATCCATATACTGCAAGATACAACGTGCCAGCTTGATTTG
ATTCATGACCCGACGAAGATAAATTCACATCAAGTATAAGGGGCATCAAT
GTTTGCCATTTCTTTTGGACCTCTTCTTCCATAGGAGGGAAGCAACTCCT
ACTGTTTGACTACCAAGGAACACACACAGAGCAGTGCAGATTGATTAAAA
ATTTCTCCATATTATATTTGGGGATGGAGAGGGTATATGTTTGAGTTCCC
CGGCGTTAGGCCGATTTCCGGGTACACAAAATGCGGGCTTCCGAGAAAAA
AAATTCCCCCAACCTTGGATTTGTTTTTTTTTTTCTCTTCTTCTTCTACT
CTATTTTTATTTCTTGTGTTTGTTTCTGTACTTTTCTTGTTGTTTTTTGT
GTGTTCTTTTTGTTGTGTTTGTTTTTTTTCTTTTCTTTTTGTTTTTATGT
ATCTATCCTTTCTTATTGTTTGTATTTTTTTTTTGTTATTTTTGTATGTT
TTCTTTGTTGTGTTATTTTTTTGGTTTTCTTTTTTTGTTTTTATCACTTT
CTCTTTGTATTGAGTGCTTTTCTTGTTTTTATTTTGTTGATTCTTTTGTC
TTGTCTCTGTCTTTTTTTTCCGTATATGCTTTGTTTGTTTCTTATCCTTT
GCTTG
__END__
HTH
-Chris
------------------------------
Date: Sat, 02 Jul 2005 01:19:29 +0100
From: Big and Blue <No_4@dsl.pipex.com>
Subject: Re: SOAP::Lite proxied
Message-Id: <Is2dnXU7DdUPQFjfRVnytQ@pipex.net>
Ian Wilson wrote:
>
> I hadn't found anywhere in that document where it explains how to set
> the credentials required by the proxy for authorization - i.e. a user-ID
> and password (for the HTTP proxy, not the endpoint).
I have problems trying to remember what to do here too.
And, at least with LWP, if not with SOAP (I don't know), there is a
difference between using the function calls to set a proxy and setting
environment variables. It applies to HTTPS calls. One will end up doing a
GET and the other a CONNECT through the proxy (IIRC I have to set the
environment variables in order to use CONNECT, which is what is needed for
teh proxy I use). And I've never found any documentations in the modules
there as to the difference and the effect. Discovered by trial, error some
network snooping and a helpful proxy admin who made some comments on the
log entries I generated.
--
Just because I've written it doesn't mean that
either you or I have to believe it.
------------------------------
Date: Sat, 02 Jul 2005 11:51:39 +0530
From: Vikrant <vikrantREMOVE@DELETEsaysnetsoftDDDD.com>
Subject: validating Xml in perl
Message-Id: <da5brs$gpb$1@domitilla.aioe.org>
hi
how can i check the xml stored in $sXML variable is valid or not.plz
suggest any function which return True or False after validation.
$sXML = "<?xml version='1.0' ?>
<ping_monitor>
<monitor_ip>10.0.0.4</monitor_ip>
<monitor_ip>10.0.0.2</monitor_ip>
<ping_monitor>";
vikrant
------------------------------
Date: Sat, 02 Jul 2005 07:44:34 +0100
From: Brian McCauley <nobull@mail.com>
Subject: Re: validating Xml in perl
Message-Id: <da5d4i$4tt$1@redhat2.bham.ac.uk>
Vikrant wrote:
> how can i check the xml stored in $sXML variable is valid or not.
Please do not start a new thread re-asking the same question just
because you don't like the answer. (For one thing the answer will be
the same).
To tell if a string contains well formed XML try parsing the string with
an XML parser module (e.g. XML::LibXML). If it parses then it's well
formed. If it doesn't then it's not. To know if it's valid you need a
DTD or Schema.
------------------------------
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 8221
***************************************