Câu hỏi ban đầu là làm thế nào để biết một biến là số, không phải nếu nó "có một giá trị số".
Có một số toán tử có các chế độ hoạt động riêng biệt cho toán hạng số và chuỗi, trong đó "số" có nghĩa là bất kỳ thứ gì ban đầu là một số hoặc đã từng được sử dụng trong ngữ cảnh số (ví dụ: trong $x = "123"; 0+$x
, trước khi bổ sung, $x
là một chuỗi, sau đó nó được coi là số).
Một cách để nói là:
if ( length( do { no warnings "numeric"; $x & "" } ) ) {
print "$x is numeric\n";
}
Nếu tính năng bitwise được bật, &
chỉ tạo một toán tử số và thêm một &.
toán tử chuỗi riêng biệt , bạn phải tắt nó:
if ( length( do { no if $] >= 5.022, "feature", "bitwise"; no warnings "numeric"; $x & "" } ) ) {
print "$x is numeric\n";
}
(bitwise có sẵn trong perl 5.022 trở lên và được bật theo mặc định nếu bạn use 5.028;
trở lên.)
perldoc perlapi
cho chúng ta biết: Hãy kiểm tra xem nội dung của SV có giống một con số (hoặc là một con số) hay không. "Inf" và "Infinity" được coi là số (do đó sẽ không đưa ra cảnh báo không phải là số), ngay cả khi atof () của bạn không tìm kiếm chúng. Hầu như không phải là một thông số kỹ thuật có thể kiểm tra được ...