Согласно perlsecret , оператор козла =()=
предоставляет контекст списка, чтобы он мог подсчитать количество своих элементов. Я тоже так думал. Но когда я случайно использовал оператор вместе с split
, я заметил кое-что странное.
Первые две строки следующего - это точно такие же утверждения, написанные в Effective Perl Programming, 2nd edition
. Но на самом деле, кажется, split
меняет поведение левой стороны.
my $wc;
$wc = () = "foo:bar:buz" =~ m/(\w+)/g; # => 3
$wc = () = split /:/, "foo:bar:buz"; # => 1
$wc = (undef) = split /:/, "foo:bar:buz"; # => 2
$wc = (undef, undef) = split /:/, "foo:bar:buz"; # => 3
$wc = (undef, undef, undef) = split /:/, "foo:bar:buz"; # => 3
Может кто-нибудь сказать мне, что делает изменения возвращаемых значений?