/ / 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 builds не разпознават тези номера, въпреки че FireFox на същата машина прави.)