В чем разница между определением переменной с помощью * vs a $? Например:
local $var;
local *var;
В чем разница между определением переменной с помощью * vs a $? Например:
local $var;
local *var;
Начальный символ известен как sigil и говорит, какую ценность представляет его идентификатор. Вы узнаете большинство из них. Вот список
доллар $
является значением скалярной
В знаке @
является массивом значение,
Процент %
является хэша- значения а
Ampers и &
является код значение
Звездочка *
является тип-глобу
Вы, менее вероятно, наткнулись на двух последних в последнее время, потому что &
не было необходимости при вызове подпрограммы так как был выпущен Perl 5.0. И typeglobs - особый тип, который содержит все другие типы и используется гораздо реже.
Я рассматриваю, насколько глубже вникать во все это, но оставит свой ответ так, как сейчас. Я могу писать больше в зависимости от комментариев, которые возникают.
$var
- это скаляр. *var
- типglob. http://perldoc.perl.org/perldata.html#Typeglobs-and-Filehandles
Это не переменная в строгом смысле слова. Обычно вы не должны использовать его.
Эй, спасибо! Раньше я никогда не видел типglob, поэтому мне было трудно найти ответ самостоятельно ... – erichar7
http://perldoc.perl.org/perldata.html#Typeglobs-and-Filehandles – toolic
Кроме того, вы почти наверняка хотите использовать 'my' вместо' local'. – AKHolland
Важно отметить, что типыglobs специфичны для переменных с областью действия пакета, а переменные, объявленные с помощью 'my', не будут иметь ассоциированную запись типаglob или таблицы символов. Документация, относящаяся к этому, очень плотная и гораздо полезнее в качестве ссылочного материала, чем вводный материал. Я рекомендую разговор Брюса Грея [Why 'my'?] (Http://www.youtube.com/watch?v=Ton-5tvDQiE), поскольку он помог мне понять переменные пакета как исторический артефакт Perl, так и конкретные ситуации в которых они по-прежнему полезны (например, для импорта). – Slade