Я столкнулся с чем-то странным в perl, который, как я думал, я бы поделился. У меня есть текстовый файл с именем «testfile.txt».Странное поведение perl. Slurp против задания
Здесь ....
BLAH BLAH BLAH BLAH BLAH
The dollar amount is $2.30 today
BLAH BLAH BLAH BLAH BLAH
Теперь я хочу, чтобы извлечь 2.30. В моем примере ниже, я разрываю файл, и он работает нормально. Второй способ вообще не работает. Есть ли какая-то магия в slurp?
#!/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
ПРИМЕЧАНИЕ: (Осветление). Как я могу извлечь 2.30 из примера присваивания? В моем реальном приложении это то, где я нахожусь в тупике. У кого-нибудь есть идея, как я это извлечу?
JW
'использование предупреждений;' дает вам подсказку. – toolic
https://eval.in/232692 –
mpapec, который сделал это! Именно это я и сделал. –