/ / Perl і gethostbyname дивна поведінка - perl, hostname, gethostbyname

Perl і gethostbyname дивна поведінка - perl, hostname, gethostbyname

Я виконую наступне:

perl -wl -e "print gethostbyname ("1234");"
123424Ò

також працює gethostbyname ("1") повертає певний результат, це не відповідає тому, що написано тут зовсім.

Я задаюсь питанням, чи повинен я навіть використовувати цей метод? Що я намагаюся зробити, це знайти, чи дійсний імен хосту.

Відповіді:

1 для відповіді № 1

Тип 1249767172 у ваш браузер, і ви можете прийти до Google. Це тому, що дійсна IP-адреса - це лише число між 0 і 4294967295.

Звичайно, ви більше знайомі з позначеннями пунктирної форми (74.125.239.4), але багато місць також приймають десяткове число безпосередньо (1249767172) або навіть шістнадцяткове позначення (0x4A7DEF04)

Оскільки ви надаєте дійсні IP-адреси, помилки не повертаються.

$ perl -MSocket=inet_ntoa -E"
my $addr = gethostbyname($ARGV[0]);
say inet_ntoa($addr);
" 1249767172
74.125.239.4

$ perl -MSocket=inet_ntoa -E"
my $addr = gethostbyname($ARGV[0]);
say inet_ntoa($addr);
" 1
0.0.0.1

$ perl -MSocket=inet_ntoa -E"
my $addr = gethostbyname($ARGV[0]);
say inet_ntoa($addr);
" 1234
0.0.4.210

(Точна поведінка може відрізнятися залежно від системи gethostbyname з мого Windows та мого cygwin будує, не розпізнати ці цифри, хоча FireFox на тому ж комп'ютері.)