Есть ли способ проверить, был ли скаляр преобразован в строку или нет?

Я пишу вещь для вывода чего-то похожего на JSON из структуры perl. Я хочу, чтобы цитирование вело себя следующим образом:

"string" outputs "string"
"05" outputs "05"
"5" outputs "5"
5 outputs 5
05 outputs 5, or 05 would be acceptable

JSON::XS обрабатывает это, проверяя, был ли скаляр "строковым" или нет, что я думаю, очень здорово. Но я не могу найти способ выполнить этот тест самостоятельно, не написав XS, чего я бы предпочел избежать. Это возможно? Я не могу найти это нигде на CPAN, не найдя обширного педантизма о Scalar::Util::looks_like_number и т. д., что совершенно не то, что мне нужно. Единственная временная мера, которую я могу найти, это Devel::Peek, который кажется злым. А также, как и JSON::XS, меня устраивает этот сценарий:

my $a = 5;
print $a."\n";
# now $a outputs "5" instead of 5)
5
задан ikegami 20 March 2012 в 23:12
поделиться