Вопрос

Я пытаюсь понять чужой код Perl, сам не разбираясь в Perl.Буду признателен за вашу помощь.

Я встретил такую ​​функцию Perl:

MyFunction($arg1,$arg2__size,$arg3)

Есть ли смысл в синтаксисе двойного подчеркивания в $arg2, или это просто часть имени второго аргумента?

Это было полезно?

Решение

Использование __ внутри имени переменной Perl не имеет особого смысла.Вероятно, это предпочтение программиста, особенно в случае, который вы указали в своем вопросе.Вы можете увидеть дополнительную информацию об именовании переменных Perl. здесь.

Другие советы

Как и в большинстве языков, подчеркивание является лишь частью идентификатора;никакого особого смысла.

Но вы уверены, что это Perl?На переменных нет никаких символов.Можете ли вы опубликовать больше контекста?

Что касается интерпретатора, подчеркивание — это просто еще один символ, разрешенный в идентификаторах.Его можно использовать в качестве альтернативы конкатенации или верблюжьему регистру для формирования идентификаторов из нескольких слов.

Первое подчеркивание часто используется для обозначения того, что идентификатор предназначен только для локального использования. например для неэкспортируемых частей модуля.Это просто соглашение;переводчику все равно.

В контексте вашего вопроса двойное подчеркивание не имеет никакого программного значения.Двойное подчеркивание действительно означает что-то особенное для ограниченного числа значений в Perl, особенно __FILE__ & __LINE__.Это специальные литералы, у которых нет префикса сигилы ($, % или @) и интерполируются только вне кавычек.Они содержат полный путь и имя исполняемого в данный момент файла и исполняемую строку.См. раздел «Специальные литералы» в перлданные или этот пост о Perl Monks

Я совершенно уверен, что arg2__size — это просто имя переменной.

Ответ Марка, конечно, правильный, он не имеет особого смысла.

Но хочу отметить, что ваш пример совсем не похож на Perl.Переменные Perl — это не голые слова.У них есть символы, как вы увидите по ссылкам выше.А в Perl нет «функций», есть подпрограммы.

Поэтому может возникнуть некоторая путаница относительно того, о каком языке мы говорим.

Вам нужно будет сообщить интерпретатору, что «$arg2» — это имя переменной.а не «$arg2__size».Для этого вам нужно будет использовать скобки.(Это использование аналогично тому, которое наблюдается в оболочке).

Это должно работать на мифункции ($ arg1, $ {arg2} __ Размер, $ arg3)

--Бину

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top