From: Deepan Perl XML Parser on
Hi,
I am having a string say $str, the value of it is as
below:

<responseStatus>HTTP/1.1 200 OK</responseStatus>

<cookies>

<cookie name="ASPSESSIONIDSQDCBDBA" path="/" domain="www-
int.juniper.net">DOCFGJEAKNOMBLHCGEMOIMBA</cookie>

</cookies>

<headers>

<header name="Cache-control">private</header>

<header name="Content-Encoding">deflate</header>

<header name="Content-Type">text/html</header>

<header name="Date">Wed, 26 Mar 2008 04:48:16 GMT</header>

<header name="Server">Concealed by Juniper Networks Redline EX</
header>

<header name="Set-
Cookie">ASPSESSIONIDSQDCBDBA=DOCFGJEAKNOMBLHCGEMOIMBA; path=/</header>

<header name="Transfer-Encoding">chunked</header>

<header name="Vary">Accept-Encoding, User-Agent</header>

<header name="Via">1.1 sac-p-green-dx2 (Juniper Networks
Application Acceleration Platform - DX 5.1.8 0)</header>

<header name="Warning">214 www-int.juniper.net &quot;Juniper
Networks DX Active&quot;</header>

<header name="X-Powered-By">ASP.NET</header>

</headers>

<content>

<contentLength>27887</contentLength>

<compression>71.3</compression>

<encodingScheme>deflate</encodingScheme>

<text><![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"..."http://
www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">..<html>..<head>....<title>
Intranet Home Page</title>..<script language="JavaScript" type="text/
javascript">..function clicker()..{..document.seek2.qt.value =
document.seek1.qt.value;..return true;..}</form>.. <!-- close Main2 --
>..</div><!-- close Main1 -->....</body>..</html>..
]]></text>

<mimeType>text/html</mimeType>

</content>

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

Now i want to get everything between "<text><![CDATA[" and "]]></
text>" [ie i need to capture the CDATA section]and i am using the
below code

if( $str =~ m#<text><!\[CDATA\[(.*)\]\]></text># )
{
print $1;
}


But not getting anything. Can anyone find out the fault in it?
From: Ben Bullock on
On Apr 2, 2:23 pm, Deepan Perl XML Parser <deepan...(a)gmail.com> wrote:

> if( $str =~ m#<text><!\[CDATA\[(.*)\]\]></text># )
> {
> print $1;
>
> }
>
> But not getting anything. Can anyone find out the fault in it?

You need an "s" at the end:

if( $str =~ m#<text><!\[CDATA\[(.*)\]\]></text>#s )

See http://perldoc.perl.org/perlre.html#Modifiers
From: Deepan Perl XML Parser on
On Apr 2, 10:30 am, Ben Bullock <benkasminbull...(a)gmail.com> wrote:
> On Apr 2, 2:23 pm, Deepan Perl XML Parser <deepan...(a)gmail.com> wrote:
>
> > if( $str =~ m#<text><!\[CDATA\[(.*)\]\]></text># )
> > {
> > print $1;
>
> > }
>
> > But not getting anything. Can anyone find out the fault in it?
>
> You need an "s" at the end:
>
> if( $str =~ m#<text><!\[CDATA\[(.*)\]\]></text>#s )
>
> Seehttp://perldoc.perl.org/perlre.html#Modifiers

Thank You Ben!
From: Chris Mattern on
On 2008-04-02, Deepan Perl XML Parser <deepan.17(a)gmail.com> wrote:
> Hi,
<much XML snipped>
>
>
> But not getting anything. Can anyone find out the fault in it?

You're trying to parse XML with regular expressions. Don't do that.
Perl has a large selection of excellent modules for processing XML.
Use them.


--
Christopher Mattern

NOTICE
Thank you for noticing this new notice
Your noticing it has been noted
And will be reported to the authorities
From: Ben Bullock on
On Wed, 02 Apr 2008 10:53:34 -0500, Chris Mattern wrote:


> You're trying to parse XML with regular expressions. Don't do that.
> Perl has a large selection of excellent modules for processing XML. Use
> them.

Chris, do you talk like that to people in real life, or is it just the
internet?