Все, что это делает - это явная строковая переменная.В 99,9% случаев это какая-то ошибка новичка.
Существуют вещи, которые могут произойти как побочный эффект этого стиля вызова:
my $foo = "1234";
sub bar { $_[0] =~ s/2/two/ }
print "Foo is $foo\n";
bar( "$foo" );
print "Foo is $foo\n";
bar( $foo );
print "Foo is $foo\n";
Здесь при строковом преобразовании возникласкопируйте и передайте это подпрограмме, обойдя проход Perl посредством ссылочной семантики.Обычно считается плохим манером разбирать вызывающие переменные, так что вы, вероятно, в порядке.
Здесь вы также можете привести в соответствие объект или другое значение.Например, undef
преобразуется в пустую строку.Объекты могут указывать произвольный код для запуска при строковом преобразовании.Возможно иметь двухзначные скаляры, которые имеют разные числовые и строковые значения.Это способ указать, что вы хотите использовать строковую форму.
Существует также одна вещь, которая может вызывать жуткий переполох.Если вы работаете с кодом XS, который просматривает флаги, которые установлены в скалярных аргументах функции, строковое преобразование в скаляр является простым способом сказать Perl: «Сделайте мне новое чистое новое строковое значение», используя только строчные флаги инет числовых флагов.
Я уверен, что есть и другие странные исключения из правила 99,9%.Это несколько.Прежде чем удалять кавычки, потратьте секунду, чтобы проверить на странную чушь, подобную этой.Если вы столкнулись с законным использованием, пожалуйста, добавьте комментарий, который идентифицирует цитаты как работоспособный кладж, и укажите причину их существования.