"\&" causes lots of trouble, including difficulty specifying certain
resulting strings.
Previously I proposed a scheme using &$@ but this is only useful to
provide a way to write &s.
The $-doubling regime which will come later wants a way to produce a
single literal $, so introduce that now using the same syntax.
And &\ feels quite natural to me.
Incompatible change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
'&' [ '^' | '~' ] [ lc | '/' | '.' | '=' ]
&& => && for convenience in shell runes
-\& => & general escaping mechanism
+
+&\& => & general escaping mechanism
+&\$ => $
& thing thing... &
&^ thing thing... &
Notably
STUFFSTUFF => STUFFSTUFF
- \STUFF => STUFF
+ STUFF\STUFF => STUFF
STUFF:changequote & => set escape back to &
&TARGETS_things
$buffering_output='';
}
for (;;) {
- unless (s{^(.*?)(\\)?(?=$esc)}{}) { o $_; last; }
+ unless (s{^(.*?)$esc}{}) { o $_; last; }
o $1;
- if ($2) { s#^$esc##; o $$esclitr; next; }
- s{^$esc}{} or die "$_ ?";
- if (s{^$esc}{}) { o "$$esclitr$$esclitr" }
+ if (s{^\\$esc}{}) { o "$$esclitr" }
+ elsif (s{^\\\$}{}) { o '$' }
+ elsif (s{^$esc}{}) { o "$$esclitr$$esclitr" }
elsif (s{^TARGETS(?:_([0-9a-zA-Z_]+))?(?=\W)}{}) {
my $t = $1 // 'all';
o target_varname($var_prefix, $t);