re->export_to_level(2, 're', $s);
} elsif ($s =~ s/^\///) {
my $reflags = $^H{reflags} || 0;
+ my $seen_dul;
for(split//, $s) {
if (/[dul]/) {
if ($on) {
+ if ($seen_dul && $seen_dul ne $_) {
+ require Carp;
+ Carp::carp(
+ qq 'The "$seen_dul" and "$_" flags '
+ .qq 'are exclusive'
+ );
+ }
$^H{reflags_dul} = $reflags{$_};
+ $seen_dul = $_;
}
else {
delete $^H{reflags_dul}
use strict;
-use Test::More tests => 32;
+use Test::More tests => 38;
use re '/i';
ok "Foo" =~ /foo/, 'use re "/i"';
use re '/d';
is eval 'qr//u', '(?^u:)', 'explicit /u in re "/d" scope';
}
+no re '/x';
+
+# use re "/dul" combinations
+{
+ my $w = '';
+ local $SIG{__WARN__} = sub { $w = shift };
+ eval "use re '/dd'";
+ is $w, "", 'no warning with eval "use re "/dd"';
+ eval "use re '/uu'";
+ is $w, "", 'no warning with eval "use re "/uu"';
+ eval "use re '/ll'";
+ is $w, "", 'no warning with eval "use re "/ll"';
+ eval "use re '/dl'";
+ like $w, qr/The "d" and "l" flags are exclusive/,
+ 'warning with eval "use re "/dl"';
+ eval "use re '/du'";
+ like $w, qr/The "d" and "u" flags are exclusive/,
+ 'warning with eval "use re "/du"';
+ eval "use re '/ul'";
+ like $w, qr/The "u" and "l" flags are exclusive/,
+ 'warning with use re "/ul"';
+}