4047
Проект
Визначення адреси сайта за його IP
IP => URL 

Форма запиту
IP:

Якщо введена Вами IP-адреса асоціюється з певним доменим ім'ям, ви побачите його на екрані. Наприклад, 18.29.1.50 => validator.w3.org

За бажанням можете вводити декілька IP (кожна окремим рядком або через прогалину).

Технічні параметри 

Мова програмування: Perl

Розмір скрипту: 712 байта (версія 1.0.)

Метод виклику: CGI

Цей приклад програмного коду я навіть про себе не можу назвати "проектом". Це скоріше підтвердження відомої істини, про те що швидко можна зробити лише нікому непотрібну річ. Навіть результат своєї роботи він повертає не як HTML, а як звичайний текст.

На підтвердження своїх слів, нижче навожу повний приклад цього Perl-скрипту. Якщо відкинути перевірки значень, що були передані користувачем, то суть програмного коду зводиться до одного рядку (у тексті він виділений напівжирним шрифтом), а саме виклику функції модуля Sockets::gethostbyaddr.

Скрипт host_by_ip.cgi

#!/usr/bin/perl -Tw
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(:standard);
use Socket;

print "Content-type: text/plain\n\n";
print "Результат запиту:\n\n";
my @ips=split /\n/, param('ips');
my $n=1;
foreach my $ip (@ips)
{
 my @oktets=($ip=~/(\d+)\.(\d+)\.(\d+)\.(\d+)/);
 my $err_data=1; 
 if ($#oktets==3)
 {
  foreach my $okt (@oktets)
  {
   if (($okt<0) or ($okt>255))
    {
     $err_data=0;
     last;    
    } 
  }
 }
 else { $err_data=0;} 
 print $n++,') ';
 if (!$err_data)
 {
  print "Помилка введення IP-адреси\n";
 }
 else
 {
  my $ipp = pack ("C4", @oktets);
  my $url = gethostbyaddr ($ipp, AF_INET)||'Визначити URL неможливо!'; 
  print join('.',@oktets), " => $url\n";
 }
}

І все ж таки дивна штука програмування. Навіть таку просту програму можна покращити. Так заміна рядка my @ips=split /\n/, param('ips'); на my @ips=split /\n+|\s+/, param('ips'); дозволить краще виглядати рядку адреси у браузері.

Ви побачити щось на зразок:
http://www.senyk.poltava.ua/cgi-bin/smpst/host_by_ip.cgi?ips=127.0.0.1+127.0.0.2
замість
http://www.senyk.poltava.ua/cgi-bin/smpst/host_by_ip.cgi?ips=127.0.0.1%0D%0A127.0.0.2