Subject: bug#34085: autoscan reports a warning

From: Danny Milosavljevic <[email-masked]>
Date: Wed, 16 Jan 2019 17:29:16 +0100

Hi,

On Tue, 15 Jan 2019 10:43:49 -0500
Joshua Branson <[email-masked]> wrote:

> I'm not certain if this is the right list to report this to, but I just
> installed autoscan version 2.21, and it gave me this warning:
> 
> #BEGIN_SRC sh
>   autoscan
> #END_SRC
> 
> Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/\${ <-- HERE [^\}]*}/ at /home/joshua/.guix-profile/bin/autoscan line 361.
> 
> 
> Should I report this upstream instead?

I think so, yes.

autoscan is part of autoconf 2.21, so the bug report should go to the autoconf package.

The regexp in question is

      s/\${[^\}]*}//g;

Perl is complaining because perl regexp use curly braces to specify a range of valid repeats.
Maybe the easiest way to understand it is that the following equivalences hold in regexps:

? is equivalent to {0,1}
+ is equivalent to {1,}
* is equivalent to {0,}

The above (at the end of the regexp "\${[^\}]*}") probably means a literal curly
brace--but they don't escape it - hence the warning.

It's only a warning because no valid repeat range can start with a closing curly
brace.
So perl can still figure out what you meant.

But it's obviously not recommended to use unescaped closing curly braces to
match a literal closing curly brace regardless.