Как называется строка? Это скаляр, поэтому символ, очевидно, будет $
. Остальное соответствует стандартным стандартам именования переменных; скажем $abc
.
my $abc = 'A string';
Поскольку сигилы означают контекст с выражения и не являются частью имени, мы столкнулись.
my $def = $abc[2];
- это не третья буква скаляра $abc
, а третий элемент массива, совместно использующий тот же символ (но с другим символом ): @abc
.
Таким образом, этому выражению, которое, вероятно, было разработано заранее для разрешения символов в виде сценария, уже присвоено значение.
Конечно, как указывает ответ Брэда , это может иметь смысл только в том случае, если мы делаем неявные предположения относительно того, что делает часть строки «элементом» в «списке». Чем больше кодировок вы должны использовать, тем хуже эти предположения по умолчанию работают.
Вы можете найти синтаксис, который вы предпочитаете, используя autobox :
$string->ch( 2 );
(Вы должны написать ch
сами.) Но это обязательно более многословно, чем просто ставить скобки в строки.