这是我的代码:
my $orderId = "1610209";
$pdfFilename = "1610209_1.pdf";
my $re = qr/^${orderId}_/;
print Dumper($re);
if($pdfFilename =~ $re) {
print "matched";
}
它'不匹配!! 翻车机打印:$ VAR1 = qr /(?^:^ 1610209 _)/;
可能有什么不对? 我的环境:
perl -v
这是为x86_64-linux-gnu-thread-multi
构建的perl 5,版本18,subversion 2(v5.18.2)lsb_release -a
分销商ID:Ubuntu 描述:Ubuntu 14.04.2 LTS 发布:14.04 代号:可信赖
答案 0 :(得分:1)
适合我!™
你在Windows上吗?由于STDOUT(即打印到屏幕上)通常是行缓冲的,因此最终打印不会显示。这意味着它在看到换行符之前不会显示。如果这是程序的最后一行,它可能永远不会在窗口关闭之前显示。
请尝试print "matched\n";
。
有关详细信息,请阅读Suffering From Buffering。
答案 1 :(得分:0)
use strict;
use warnings;
use Data::Dumper;
my $orderId = "1610209";
my $pdfFilename = "1610209_1.pdf";
my $re = qr/^${orderId}_/;
if($pdfFilename =~ $re) {
print "matched Dumper($re)\n";
} else {
print "not matched Dumper ($re)\n";
}
返回
matched Dumper((?^:^1610209))
但是,为什么要使用数据转储器?
use strict;
use warnings;
my $orderId = "1610209";
my $pdfFilename = "1610209_1.pdf";
if($pdfFilename =~ /^$orderId/) {
print "Matched $orderId with $pdfFilename\n";
} else {
print "Not Matched $orderId with $pdfFilename\n";
}
答案 2 :(得分:0)
该代码匹配。如果您发现了其他情况,那不是您运行的程序。
您确定实际上没有以下内容吗?
my $orderId = "1610209\n";
chomp
行从文件中读取以删除尾随换行符。