为什么两个打印的数字不同?
#!/usr/bin/env perl
use warnings;
use 5.10.1;
my $sep = '';
my $number = 110110110110111;
$number =~ s/(\d)(?=(?:\d{3})+\b)/$1$sep/g;
say "A: <$number>";
$number =~ s/\Q$sep\E//g;
say "B: <$number>";
输出:
A: <110110110110111>
B: <11111111111>
答案 0 :(得分:15)
引用man perlop:
如果模式评估为空字符串,则最后成功 改为执行正则表达式。
尝试在第二次替换之前插入一个成功的正则表达式匹配,以查看正在发生的事情:
(my $foo = '1') =~ s/1/x/; # successfully match “1”
$number =~ s///g; # now you’re deleting all 1s
say "B: <$number>"; # <0000>
我会说这应该被弃用并由use warnings
警告,很难看到好处。