Jan*_*kie 0 regex perl scalar slurp
我在perl中遇到了一些奇怪的东西,我以为我会分享.我有一个名为"testfile.txt"的文本文件.
这里是....
BLAH BLAH BLAH BLAH BLAH
The dollar amount is $2.30 today
BLAH BLAH BLAH BLAH BLAH
Run Code Online (Sandbox Code Playgroud)
现在我想提取2.30.在我下面的例子中,我正在啜饮文件,它工作正常.第二种方式根本不起作用.啜饮中有一些神奇的东西吗?
#!/usr/local/bin/perl
## THIS WORKS
my $content;
my $filename = "testfile.txt";
my $fh="FILEIN";
open(my $fh, '<', $filename) or die "cannot open file $filename";
{
local $/;
$content = <$fh>;
}
close($fh);
my $price;
($price)=$content=~m{is\s\$([0-9]{1,2}\.[0-9]{2})\stoday};
print "Result is $price\n"; #Correctly produces 2.30
## DOESN'T WORK
$content2="BLAH BLAH BLAH BLAH BLAH The dollar amount is $2.30 today BLAH BLAH BLAH BLAH BLAH";
my $price2;
($price2)=$content2=~m{is\s\$([0-9]{1,2}\.[0-9]{2})\stoday};
print "Result is $price2\n"; #Doesn't work
Run Code Online (Sandbox Code Playgroud)
注意:(澄清).如何从作业示例中提取2.30?在我的真实世界应用程序中,这就是我被困难的地方.任何人都知道我如何提取它?
JW
$content2="BLAH BLAH BLAH BLAH BLAH The dollar amount is $2.30 today BLAH BLAH BLAH BLAH BLAH"
Run Code Online (Sandbox Code Playgroud)
由于字符串是双引号,因此$2它被Perl变量的值替换$2- 这是最后一个正则表达式匹配的第二个带括号的子表达式的内容,但重要的是它不是你想要的.改为使用单引号:
$content2='BLAH BLAH BLAH BLAH BLAH The dollar amount is $2.30 today BLAH BLAH BLAH BLAH BLAH'
Run Code Online (Sandbox Code Playgroud)