По-видимому, можно сохранить «необработанный символ» (в отличие от ссылки на символ) в скалярной переменной и использовать его в скалярных контекстах.
Как определить, является ли скалярное значениеВыражение является одним из этих символов?
Похоже, что они преобразуются в "*name_of_symbol"
, а ref
возвращает ""
.Однако Data::Dumper
также может определить, что это не строка, и печатает ее без кавычек.
Можно ли определить, когда у вас есть необработанный символ?Как Data::Dumper
делает это?
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
local *foo = \4;
my $sym = *foo;
printf "((%s))\n", $sym;
printf "[[%s]]\n", (ref $sym);
print Dumper($sym);
производит:
((*main::foo))
[[]]
$VAR1 = *::foo;
Я ожидал какое-то выделенное значение для ref $sym
.