次のコードでは、同じ出力を作成して印刷したいと考えていg
ます。f
差は($RE{num}{real})$
文字列として与えられます。それを正規表現に変換する方法はありますか?
~/linux/test/perl/library/Regexp/Common/%RE/num/real$ cat main1.pl
#!/usr/bin/env perl
use strict;
use warnings;
use autodie;
use FindBin;
use lib "$FindBin::Bin/.";
use Regexp::Common;
sub f {
my $x = shift;
$x =~ s/^($RE{num}{real})$/$1 is real/;
print "$x\n";
}
f("1.5");
f("15f");
f("1e5");
f(".1e5");
f("a");
my $regex_str='($RE{num}{real})';
#Neither of the following work.
#$regex_str=eval $regex_str;
#$regex_str=qr{$regex_str};
sub g {
my $x = shift;
$x =~ s/^$regex_str$/$1 is real/;
print "$x\n";
}
g("1.5");
g("15f");
g("1e5");
g(".1e5");
g("a");
~/linux/test/perl/library/Regexp/Common/%RE/num/real$ ./main1.pl
1.5 is real
15f
1e5 is real
.1e5 is real
a
1.5
15f
1e5
.1e5
a