Angie Ahl wrote: > > I'm trying to get the value of $1 into a var, the following don't work > and I can't figure out why > > $_ = $html_body; > my ($resrow) = m#<!-- VM: resrow -->(.*?)<!-- VM: /resrow -->#; > m#<!-- VM: resrow -->(.*?)<!-- VM: /resrow -->#; > #print $1; > print $resrow; > > $resrow holds nothing, however if I print $1 I do have a match > > $_ = $html_body; > m#<!-- VM: resrow -->(.*?)<!-- VM: /resrow -->#; > my $resrow = $1; > print $resrow; > > doesn't work either. > > How do I get $1 into a var for later use. It's driving me a little loopy > now. > > I'm basically trying to extract the middle bit into a var of it's own. I > thought that would be easy....
Hi Angie. It looks like your regex isn't matching. $1 will keep the value captured by the last successful match. Try this code. (The 'for ($html_body) { .. }' aliases $_ with $html_body for the extent of the code block.) my $resrow; for ($html_body) { if (m#<!-- VM: resrow -->(.*?)<!-- VM: /resrow -->#) { $resrow = $1; } else { die "No match for HTML"; } } print $resrow, "\n"; So I guess you need to fix your regex. Is it possible that the actual text contains a newline? In which case you need to replace spaces with '\s+'. HTH, Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>