有人能解释一下以下两个语法之间的区别吗:
($x) = $a =~ /(\d+)/;
$y = $a =~ /(\d+)/;
在这个例子中,如果
$a
=100lkj
,那么$x = 100
但是$y = 1
。通过这段代码,我试图从
$a
字符串中提取数值。我不太清楚为什么要这样做?
$1,$2,$3,...
。$a =~ /(\d+)/;
$x = $1;
$a
和$b
是用于sort
的特殊变量,请不要使用它们 :)。($x) = $a =~ /(\d+)/;
# $x is the first element of the RegEx return value
# ($x, $y, $z) = $a =~ /(\d)(\d)(\d)/;
# $x = first match, $y = second and so on.
=~
返回匹配项的列表。如果您的 $a
是 abc123def456ghi
,第一个表达式将返回 (123, 456)
。您将第一个匹配项分配给 $x
。=~
运算符返回找到的匹配数,在您的情况下为 1。$&
和 $1
.. $9
变量。
Searches a string for a pattern match, and in scalar context returns true if it succeeds, false if it fails.
- user1558455$1
之前没有检查匹配是否成功,因此它可能包含垃圾数据。如果您想避免使用返回值,您必须使用my $x = $a =~ /(\d+)/ ? $1 : undef;
而不是my ($x) = $a =~ /(\d+)/;
。但那太傻了。 - ikegami