1

我根本不习惯 perl 并且语法有问题。我将如何在下面返回“棕色”?从我正在阅读的内容来看,这应该可以..

my $text = "the quick brown dog";
print "$text\n";
my $newvar = $text =~ m/quick (.*) dog/;
print "$newvar\n";
4

1 回答 1

3
my $newvar = $text =~ m/ quick (.*) dog /;

是标量上下文中的赋值,并赋值1undef

您想在列表上下文中进行此分配

my ($newvar) = $text =~ m/ quick (.*) dog /;

它从正则表达式中分配捕获的组。

标量上下文和列表上下文之间的区别是在 Perl 中习惯的最棘手的事情之一。

请注意,从 Perl 中的正则表达式中捕获的组也被分配给特殊变量$1, $2, ... 。所以你也可以说

print "$1\n";
于 2013-02-01T22:17:42.530 回答