Это не eval, а qr my $re = qr/^(abc|def)$/; my $re_str = $re.''; my $re2 = qr/$re_str/; my $re2_str = $re2.''; print "$re_str\n$re2_str\n"; И именно так он и должен поступать.