2013-08-12 2 views
-3

Я вижу, когда я прохожу через элементы массива и проверяю $ # _, я получаю -1 для каждого элемента. Я надеюсь, кто-то сможет объяснить, что делает эта переменная, и что она используется чаще всего.

+0

ли вы имеете в виду '$ _' или' $ # '? Потому что 'perldoc -v '$ # _" 'ничего не возвращает ... –

+5

Показать код в контексте. – toolic

+0

Мне не нужно показывать код, если вы понимаете, что делает переменная /. – GL2014

ответ

10

Так же, как $#foo последний существующий индекс массива @foo, $#_ последний существующий индекс массива @_. Если @_ пуст, $#_ - -1.

Похоже, вы хотите использовать $_. $_ является псевдонимом foreach, map и grep - петлями к обрабатываемому элементу. while (<>) также устанавливает $_ (так как он переписан на while (defined($_ = <>))). В результате $_ используется в качестве аргумента по умолчанию для многих встроенных функций (например, say).

# Print each element on its own line 
say for @a; 

короток для

# Print each element on its own line 
say $_ for @a; 

который является лаконичной формой

# Print each element on its own line 
for my $ele (@a) { 
    say $ele; 
} 
+0

Спасибо, я ценю ваш ответ. – GL2014

0

Я считаю, вы имеете в виду $_, что является особой переменной в Perl. Он удерживает текущее значение при циклическом перемещении по элементу списка. Например, ниже будет распечатываться каждый элемент @foo по одному за раз.

foreach (@foo) { 
    print $_; 
} 
+0

Нет, не знаю. См. Другой ответ. – GL2014