use strict; use warnings; # DON'T turn off the uninit warning my $x = qr/(a(??{$x})?b)/; print "x1($1)\n" if "alphabet" =~ $x; print "x2($1)\n" if "caaabbbc" =~ $x; my $y; $y = qr/(a(??{$y})?b)/; print "y1($1)\n" if "alphabet" =~ $y; print "y2($1)\n" if "caaabbbc" =~ $y; __END__ output: Use of uninitialized value in pattern match (m//) at rx line 2. x1(ab) x2(ab) y1(ab) y2(aaabbb)