After compiling and installing GNU automake 1.15, I get this error whenever I run automake:

Unescaped left brace in regex is deprecated, passed through in regex;
marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/
at /usr/local/bin/automake line 3936

I am running perl v5.22.0.

  • Problem seems to be fixes with automake 1.15.1
    – arved
    Commented Dec 13, 2017 at 20:12
  • This problem has cropped up in Creating config file /etc/logrotate.d/postgresql-common with new version Building PostgreSQL dictionaries from installed myspell/hunspell packages... en_us Removing obsolete dictionary files: Setting up postgresql-9.5 (9.5.11-0ubuntu0.16.04) ... Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78. Also because @bill-cole's answer is most relevant. Commented Feb 18, 2018 at 18:51

3 Answers 3


In perl v5.22, using a literal { in a regular expression was deprecated, and will emit a warning if it isn't escaped: \{. In v5.26, this won't just warn, it'll cause a syntax error.

The author of the software will need to fix this before the 5.26 release. For now, you can safely ignore this warning.

See perldelta for details.


This was fixed on 2016-04-01 (after automake 1.15, before 1.15.1).

From the ChangeLog:

  966 2016-04-01  Paul Eggert  <[email protected]>
  968   automake: port to Perl 5.22 and later
  970   Without this change, Perl 5.22 complains "Unescaped left brace in
  971   regex is deprecated" and this is planned to become a hard error in
  972   Perl 5.26.  See:
  973   http://search.cpan.org/dist/perl-5.22.0/pod/perldelta.pod#A_literal_%22{%22_should_now_be_escaped_in_a_pattern
  974   * bin/automake.in (substitute_ac_subst_variables): Escape left brace.

This is due to the change described in "Perl Changes for 5.22" but the solution suggested there of escaping the '{' is frequently not the right thing to do, depending on the intended logic of the regex.

This warning occurs when a regex uses a construct like "{,20}" which historically in some OTHER regex implementations has been interpreted as equivalent to "{0,20}", i.e. "a repeating series of the preceding atom, zero to twenty times." In all cases where the intent is to quantify a repeat, this is broken in all modern versions of Perl, because interpretation of '{' followed by anything other than a number as a literal '{' has been explicitly documented since 5.8. Escaping the left brace in the case of an intended quantifier isn't the fix; adding the implied zero is.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .