LINUX.ORG.RU

Можешь с нулем сравнить еще. Недостаток - "настоящие" числовые нули тоже не пройдут такую проверку.

А вообще-то сама постановка задачи показывает, что чё-то пошло не так. То ли ЯП выбран не тот, то ли программист.

anonymous
()

сравни его с другим числом, если получилось, значит число.

if ($unknown_var > 10 ){
  print "$unknown_var is a number\n";
} elsif ($unknown_var == 10 ){
  print "$unknown_var is a number\n";
} elsif ($unknown_var < 10 ){
  print "$unknown_var is a number\n";
} else {
  print "$unknown_var is not a number\n";
}

vilfred ☆☆
()
Ответ на: комментарий от vilfred

не работает:

$ cat test_int2.pl
my $unknown_var = "hahaha";

if ($unknown_var > 10 ){
  print "$unknown_var is a number\n";
} elsif ($unknown_var == 10 ){
  print "$unknown_var is a number\n";
} elsif ($unknown_var < 10 ){
  print "$unknown_var is a number\n";
} else {
  print "$unknown_var is not a number\n";
}

$ perl test_int2.pl
hahaha is a number

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

Понятно, что не работат. Если строка начинается не с числа, то при сравнении с числом она принимается равной нулю, то есть любая строка, не содержащая цифр по определению меньше 10. Более того, если

my $unknown_var = "100hahaha";

то $unknown_var больше 10 (принимается равным 100).

mky ★★★★★
()

Фундаментального отличия между скалярами в перле нет, думаю, это Вы понимаете. Потому, вероятно, надо уточнить, что Вы называете "числом".

Например (для затравки), число ли, по-вашему, "000"? "009"? "0x0"? ""? "2+2"? "15A0CD"? "3.1415 is pi"? "1 "? " 1 "?

alexsaa
()
Ответ на: комментарий от anonymous

>А вообще-то сама постановка задачи показывает, что чё-то пошло не так. То ли ЯП выбран не тот, то ли программист.

+1. Данная задача противоречит идеологии перла. Автору нужно сменить язык на что-нибудь с жёсткой типизацией.

kranky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.