Как узнать, имеет ли переменная числовое значение в Perl?

Первоначальный вопрос заключался perl в том, как определить, является perl ли переменная числовой, а perl5 не «имеет ли она числовое numbers значение».

Есть несколько perl операторов, которые имеют perl5 отдельные режимы работы для number числовых и строковых операндов, где perl "числовой" означает все, что numbers изначально было числом или perl когда-либо использовалось perl5 в числовом контексте (например, в perl $x = "123"; 0+$x перед добавлением, $x - это number строка, впоследствии она numbers считается числовой).

Один perl из способов сказать:

if ( length( do { no warnings "numeric"; $x & "" } ) ) {
    print "$x is numeric\n";
}

Если numbers включена побитовая функция, которая perl делает & только числовым оператором number и добавляет отдельный строковый perl5 оператор &., вы должны отключить perl5 его:

if ( length( do { no if $] >= 5.022, "feature", "bitwise"; no warnings "numeric"; $x & "" } ) ) {
    print "$x is numeric\n";
}

(побитовое доступно в number Perl 5.022 и выше и включено perl5 по умолчанию, если вы use 5.028; или numbers выше.)

perl

numbers

2022-11-18T20:08:18+00:00