Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Identification of which line causing regex problem

0 views
Skip to first unread message

Ela

unread,
May 5, 2008, 9:44:32 PM5/5/08
to
Dear all,

I'm modifying a system (totally more than 100000-lines for tens of files)
written by others and would like to identify which line leads to the
following problem.

Invalid [] range "l-c" in regex; marked by <-- HERE in m/^3-oxoacyl-[acyl-c
<-- HERE arrier protein] reductase fabg1$/

Unfortunately the error message does not tell me which line of which file
leads to the problem. Could anybody advise?


Ben Bullock

unread,
May 5, 2008, 10:07:56 PM5/5/08
to

Just grep for oxoacyl?

In Perl you can do it like this:

cat *.pl | perl -n -e 'print "$.:$_" if /oxoacyl/;'

But are you sure there are no line numbers?

#!/usr/local/bin/perl
print if /[z-a]/;

Invalid [] range "z-a" in regex; marked by <-- HERE in m/[z-a <-- HERE ]/
at ./usenet-2008-5-6-c.pl line 2.

I got the line number at the end there.


Ronny

unread,
May 7, 2008, 7:21:01 AM5/7/08
to
On 6 Mai, 04:07, Ben Bullock <benkasminbull...@gmail.com> wrote:
> On Tue, 06 May 2008 09:44:32 +0800, Ela wrote:
> > I'm modifying a system (totally more than 100000-lines for tens of
> > files) written by others and would like to identify which line leads to
> > the following problem.
>
> > Invalid [] range "l-c" in regex; marked by <-- HERE in
> > m/^3-oxoacyl-[acyl-c <-- HERE arrier protein] reductase fabg1$/
>
> > Unfortunately the error message does not tell me which line of which
> > file leads to the problem. Could anybody advise?
>
> Just grep for oxoacyl?

This might not help here, unless the regexp is really given literally
(in which case the OP likely would have found it already). I suspect
that there is a string interpolation going on - kind of

m/^${protein_name}$/

In this case, a simple source code search wouldn't be of much help.

Ronald

Ben Bullock

unread,
May 7, 2008, 10:25:56 AM5/7/08
to
On May 7, 8:21 pm, Ronny <ro.naldfi.sc...@gmail.com> wrote:
> On 6 Mai, 04:07, Ben Bullock
> > Just grep for oxoacyl?
>
> This might not help here, unless the regexp is really given literally
> (in which case the OP likely would have found it already). I suspect
> that there is a string interpolation going on - kind of
>
> m/^${protein_name}$/

It's possible, but I don't see the point in speculating without
further information from the original poster. Note that, as I pointed
out in the part of the message you didn't quote, the original poster
claimed he wasn't getting line numbers in the error messages, which
isn't the behaviour of Perl 5.8 or Perl 5.10, or probably any other
version of Perl you could find, so until that is clarified there is
not much else to say about it. Realistically the most likely
explanation is that he somehow missed the line numbers in Perl's error
message.

Dr.Ruud

unread,
May 7, 2008, 10:32:59 AM5/7/08
to
Ela schreef:

This is not a runnable and minimal source. Go and read the Posting
Guidelines again.

--
Affijn, Ruud

"Gewoon is een tijger."

Frank Seitz

unread,
May 7, 2008, 10:39:56 AM5/7/08
to

The OP expected, strangely enough, the line number
of the input file, not the line number of the source file.

Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Jürgen Exner

unread,
May 7, 2008, 11:24:38 AM5/7/08
to
"Ela" <e...@yantai.org> wrote:
>I'm modifying a system (totally more than 100000-lines for tens of files)
>written by others and would like to identify which line leads to the
>following problem.
>
>Invalid [] range "l-c" in regex; marked by <-- HERE in m/^3-oxoacyl-[acyl-c
><-- HERE arrier protein] reductase fabg1$/

Well, the character set
[acyl-carrier protein]
does contain the range 'l-c' which is empty. Obviously that is what perl
is complaining about. Solution: just escape the dash with a leading
backslash.
However, I doubt that will produce the effect you are looking for. Are
you really, really sure you want that character set there? To me it
looks much more like you want a literal match of the text 'acyl-carrier
protein'.

>Unfortunately the error message does not tell me which line of which file
>leads to the problem.

First I didn't believe you but a quick test confirms that you are right.
The perl interpreter does not print a file/line information (tried it on
5.6.1). Wierd!

>Could anybody advise?

Just grep your files for the offending m/// instruction. Something
similar to
grep "acyl-carrier protein" *.pl

jue


Peter J. Holzer

unread,
May 9, 2008, 2:25:08 AM5/9/08
to
On 2008-05-07 14:32, Dr.Ruud <rvtol...@isolution.nl> wrote:
> Ela schreef:
>> I'm modifying a system (totally more than 100000-lines for tens of
>> files) written by others and would like to identify which line leads
>> to the following problem.
>>
>> Invalid [] range "l-c" in regex; marked by <-- HERE in
>> m/^3-oxoacyl-[acyl-c <-- HERE arrier protein] reductase fabg1$/
>>
>> Unfortunately the error message does not tell me which line of which
>> file leads to the problem. Could anybody advise?
>
> This is not a runnable and minimal source.

What would "runnable and minimal source" be in this case?

> Go and read the Posting Guidelines again.

Go and read the question before answering.

hp

Peter J. Holzer

unread,
May 9, 2008, 2:28:24 AM5/9/08
to
On 2008-05-07 14:39, Frank Seitz <devnu...@web.de> wrote:

> Ben Bullock wrote:
>> Note that, as I pointed out in the part of the message you didn't
>> quote, the original poster claimed he wasn't getting line numbers in
>> the error messages, which isn't the behaviour of Perl 5.8 or Perl
>> 5.10, or probably any other version of Perl you could find, so until
>> that is clarified there is not much else to say about it.
>> Realistically the most likely explanation is that he somehow missed
>> the line numbers in Perl's error message.
>
> The OP expected, strangely enough, the line number
> of the input file, not the line number of the source file.

Why do you think so?

hp

Dr.Ruud

unread,
May 9, 2008, 7:09:02 AM5/9/08
to
Peter J. Holzer schreef:

> Go and read the question before answering.

*plonk*

xho...@gmail.com

unread,
May 9, 2008, 12:32:20 PM5/9/08
to
Jürgen Exner <jurg...@hotmail.com> wrote:
> "Ela" <e...@yantai.org> wrote:
> >I'm modifying a system (totally more than 100000-lines for tens of
> >files) written by others and would like to identify which line leads to
> >the following problem.
> >
> >Invalid [] range "l-c" in regex; marked by <-- HERE in
> >m/^3-oxoacyl-[acyl-c <-- HERE arrier protein] reductase fabg1$/
>
> Well, the character set
> [acyl-carrier protein]
> does contain the range 'l-c' which is empty. Obviously that is what perl
> is complaining about. Solution: just escape the dash with a leading
> backslash.
> However, I doubt that will produce the effect you are looking for. Are
> you really, really sure you want that character set there? To me it
> looks much more like you want a literal match of the text 'acyl-carrier
> protein'.

I think it is much more likely that the string is coming from a data file
and put into the regex via a variable, not hard-coded into the script.

Going further out on a limb, he probably should use index rather than
a regex once he tracks down where the regex is.

>
> >Unfortunately the error message does not tell me which line of which
> >file leads to the problem.
>
> First I didn't believe you but a quick test confirms that you are right.
> The perl interpreter does not print a file/line information (tried it on
> 5.6.1). Wierd!

Yes indeed. I had to dig up a copy of 5.6.1 just to see it for myself.
So one obvious tip to the OP would be to upgrade to a newer perl,
preferably for production or at least just for debugging. (I didn't see
this documented in the Changes* files, so I don't know when the code was
fixed.)


>
> >Could anybody advise?
>
> Just grep your files for the offending m/// instruction. Something
> similar to
> grep "acyl-carrier protein" *.pl

Probably have to grep all the data files, too.

Xho

--
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.

Gordon Etly

unread,
May 9, 2008, 12:55:36 PM5/9/08
to
Dr.Ruud wrote:
> Peter J. Holzer schreef:
>
> > Go and read the question before answering.
>
> *plonk*

Yes, the whole world really needs to know you added someone to your
killfile...

--
G.Etly


Frank Seitz

unread,
May 12, 2008, 4:14:26 AM5/12/08
to

Hm, I don't know. Seems that I misinterpreted the
original posting... Thank you.

0 new messages