Re: Perl split() question (OT)...
Steve Bertrand wrote: > Perl hackers -- Figured someone would have a reasonably quick, easy answer > for this: > > I am trying to read through a file, line-by-line, and I want to extract > the text in between the [ and ] characters. I would normally half the line > by split() - ing the line first by [ as follows: > > if ($logLine =~ /$struct$structStart/) { > @lineArray = split (/[/, $logLine); > > and then further, half again later using the ]. However, Perl does not > like it when I search for [, as it thinks I am trying to use a regex. I > have tried to escape the pattern, to no avail. > > Is there a 'special' escape for this, and more importantly, is there an > easier way to extract data from a line of a file without having to split > it up twice? > > An example of the line I'm trying to get the contents out of is this: > > | "LRED[Conversation started on 03 Feb 21:51:11] > > and I need the data between [ ... ]. > > I know it's OT, but hopefully someone can help me out. > > Tks! > > Steve Something like this perhaps: while(<>) { /.*\[(.*)\].*/; $text = $1; } Rgds Mathias ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Perl split() question (OT)...
> On Fri, 23 Jul 2004, Steve Bertrand wrote: > >> Perl hackers -- Figured someone would have a reasonably quick, easy >> answer >> for this: >> >> I am trying to read through a file, line-by-line, and I want to extract >> the text in between the [ and ] characters. > > This is a job for..capturing parens!!! > > Try this: > > if ($_=~/\[(.+)\]/) { > $var=$1; > } > > $1 would be the string matched by the regex between ( and ) > Absolutely perfect!! This worked excellent: while ($_ = ) { if ($_ =~ /$struct/ && $_ =~ /$structStart/) { if ($_ =~ /\[(.+)\]/) { $string = $1; print "$string -- $struct$structStart\n"; # ... do other stuff, snipped } } else { Thank-you so much! Steve > > > Fer > ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
RE: Perl split() question (OT)...
Convert the /[/ to /\[/ and see if that works. Generally brackets mean a character class in perl regexs. You could also use single quotes. E.g. split('[', $line). Good luck, Lee > -Original Message- > From: Steve Bertrand [mailto:[EMAIL PROTECTED] > Sent: Friday, July 23, 2004 10:32 AM > To: [EMAIL PROTECTED] > Subject: Perl split() question (OT)... > > Perl hackers -- Figured someone would have a reasonably quick, easy answer > for this: > > I am trying to read through a file, line-by-line, and I want to extract > the text in between the [ and ] characters. I would normally half the line > by split() - ing the line first by [ as follows: > > if ($logLine =~ /$struct$structStart/) { > @lineArray = split (/[/, $logLine); > > and then further, half again later using the ]. However, Perl does not > like it when I search for [, as it thinks I am trying to use a regex. I > have tried to escape the pattern, to no avail. > > Is there a 'special' escape for this, and more importantly, is there an > easier way to extract data from a line of a file without having to split > it up twice? > > An example of the line I'm trying to get the contents out of is this: > > | "LRED[Conversation started on 03 Feb 21:51:11] > > and I need the data between [ ... ]. > > I know it's OT, but hopefully someone can help me out. > > Tks! > > Steve > > ___ > [EMAIL PROTECTED] mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "freebsd-questions- > [EMAIL PROTECTED]" ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Perl split() question (OT)...
On Fri, 23 Jul 2004, Steve Bertrand wrote: > Perl hackers -- Figured someone would have a reasonably quick, easy answer > for this: > > I am trying to read through a file, line-by-line, and I want to extract > the text in between the [ and ] characters. This is a job for..capturing parens!!! Try this: if ($_=~/\[(.+)\]/) { $var=$1; } $1 would be the string matched by the regex between ( and ) Fer ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"