вопрос по perl'у

zya369


[localhost perl]$ cat ss.pl
#!/usr/bin/perl
$s = [12, 34, 56];
print @{$s};
print "\n".length(@{$s})."\n";
[localhost perl]$ ./ss.pl
123456
1


почему length выдает единицу , хотя в массиве явно 3 элемента?

Dasar

Хоть, я и не знаю Perl, но мне кажется, что оператор @ объединяет элементы массива в один скаляр
В итоге, мы получаем один элемент длина от которого и будет единица.

voronetskaya

Хоть, я и не знаю Perl
походу тут ты гонишь

Dasar

по perl-у я читал только несколько обсуждений в данном форуме.
на Perl-е сам ничего не писал.

Marinavo_0507

perldoc -f length ясно говорит, что эта функция не определяет размер массива

zya369

да че-то я нагнал конкретно%)
видимо я вчера ночью совсем не втыкал%)

shlyumper

length EXPR
length Returns the length in characters of the value of EXPR. If EXPR
is omitted, returns length of $_. Note that this cannot be used
on an entire array or hash to find out how many elements these
have. For that, use "scalar @array" and "scalar keys %hash"
respectively.

If you evaluate an array in scalar context, it returns the
length of the array. (Note that this is not true of
length ожидает на вход scalar, вот у тебя и получается длина цифры 3, равная 1.
P.S. perldoc рулит.

zya369

P.S. perldoc рулит.
я уже понял просто в 3 часа ночи у меня не было сетки и я запостил щас не глянув снова
Оставить комментарий
Имя или ник:
Комментарий: