Friday, March 12, 2010

хитрый split

my $s = "bla bla bla";
my $count = () = split / /, $s;

Чему равен $count ?

4 comments:

  1. $count = 1
    Попробовать поставить непустой массив,
    my $count = (my $a) = split / /, $s;
    на выходе получил "2".
    Из-за чего такой эффект?

    ReplyDelete
  2. Это документированная фича (http://perldoc.perl.org/functions/split.html):
    When assigning to a list, if LIMIT is omitted, or zero, Perl supplies a LIMIT one larger than the number of variables in the list, to avoid unnecessary work.
    split сука хитрый)

    ReplyDelete
  3. Офигеть. Не знал! Спасибо.

    ReplyDelete