> ...how to execute a ***multi-line*** match.
> $_ =~ s/^(M\d+)\n^(.*)/A $1\nB $2/mi;
> ...i am trying to match the first line, beginning
> with M followed by consecutive digists...

You are confused about what a "multi-line" match is.  A "multi-line" match
will attempt a match on ONE line at a time.  ...What you want is a
"single-Line" match.  The /m modifier will never match a newline except at
the END of the match... and the carrot is only valid at the beginning of the
regex.

Something like this *might* be what you are looking for if I understand
correctly...

$_ = "
M0011
spaceXYZabcdefh
";

$_ =~ s/(?:^|\n)(M\d+)\n([^\n]*)/A $1\nB $2/si;
print $_;

Rob
-----Original Message-----
From: M z [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, July 02, 2002 2:08 PM
To: Connie Chan
Cc: [EMAIL PROTECTED]
Subject: URGENT. Re: multi-line regex question, please help!


Dear Connie, 

Inside the filehandle are the sample input
line 1: M0011
line 2: spaceXYZabcdefh

I am opening that up, reading it, trimming off
prefacing spaces, as in line 2, and then the second
expression is what I can't seem to get working.  The
whole point is for me to know how to execute a
multi-line match.

$_ =~ s/^(M\d+)\n^(.*)/A $1\nB $2/mi;


i am trying to match the first line, beginning with M
followed by consecutive digists, then a newline, then
a caret (presumable will match after a newline by
virtue of the /m modifier???)than (.*) in $2 I thought
would be the 2nd line...

Please help, anyone!!!!!
 while (<I>) {
> > s/^ +//gi;
> > ###below, I think I count for M0011 in $1
> > ###then, i thought by using the /m modifier,
> > ###i could but a caret after the \n
> > ###this doesn't work for me, please help
> > ########
> > $_ =~ s/^(M\d+)\n^(.*)/A $1\nB $2/mi;
> > ########
> > print O "$_";
> > 
> > 
> > }


M0011
 XYZabcdefh

--- Connie Chan <[EMAIL PROTECTED]> wrote:
> But what the content inside you file <I> ?
> and what you suppose you to write to file <O> ?
> Beside, seems you fotgot to close <O>;  close <I> =)
> 
> Smiley Connie =)
> 
> 
> 
> ----- Original Message ----- 
> From: "M z" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Tuesday, July 02, 2002 8:51 AM
> Subject: multi-line regex question, please help!
> 
> 
> > Dear all,
> > 
> > I am truly bewildered as to why I can't get this
> > script to do what I want.  Namely, to get the
> > multiline match.  Please help!!!! see section of
> code
> > surrounded by ######## for question area
> > 
> > sample input:  
> > 
> > M0011
> >  XYZabcdefh
> > 
> > #!C:/perl/bin -w
> > 
> > die "Usage perl qup.pl <input> <output>" unless
> @ARGV
> > == 2;
> > 
> > my $in = $ARGV[0];
> > my $out = $ARGV[1];
> > 
> > open(I, "$in");
> > open(O, ">$out");
> > 
> > while (<I>) {
> > s/^ +//gi;
> > ###below, I think I count for M0011 in $1
> > ###then, i thought by using the /m modifier,
> > ###i could but a caret after the \n
> > ###this doesn't work for me, please help
> > ########
> > $_ =~ s/^(M\d+)\n^(.*)/A $1\nB $2/mi;
> > ########
> > print O "$_";
> > 
> > 
> > }
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Yahoo! - Official partner of 2002 FIFA World Cup
> > http://fifaworldcup.yahoo.com
> > 
> > -- 
> > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> > For additional commands, e-mail:
> [EMAIL PROTECTED]
> > 
> > 
> 


__________________________________________________
Do You Yahoo!?
Sign up for SBC Yahoo! Dial - First Month Free
http://sbc.yahoo.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to