ActivePerl’ü kurarken
ActiveState’in bu kitapçığı yazarken 5.22 sürümüne ulaşmış olan ActivePerl programının kuruluşu sırasında bazı hata mesajları ile karşılaşmak mümkündür. 102, 104, 105, 112 veya 301 sayılı hata mesajlarını alırsanız, bilgisayarınızı kapatıp, açın ve ActivePerl’ü kurmadan önce herhangi bir 16-bit program çalıştırmayın. Sorunu bu yöntemle çözemezseniz, http://support.installshield.com/kb adresinde Q100198 sayılı yaardım dosyasını indirerek, önerileri sırasıyla uygulayın.
ActivePerl’ün kurulumununsonuna doğru “Cannot Craeta Perl Interpreter” mesajını alırsanız, muhtemelen daha önce kurulmuş eski sürüm ActivePerl ile çatışma var demektir. Bu durumda ya eski ActivePerl’ü kaldırır ve klasörlerini silemeniz ya da yeni sürüm ActivePerl’ü yeni bir klasöre kurmanız gerekir.
ActivePerl’ü adında boşluk olan dizine kurmayın. ActivePerl’ün işlemesi için gerekli bazı programlar, adında boşluk olan dizinleri göremezler. ActivePerl’ün Kur programının önerdiği varsayılan dizini kabul etmek doğru olur. Ayrıca Kur programının Autoexec.bat ve config,sys dosyalarında yapmayı önerdiği değişiklikleri yapmasına izin verin.
Kurma ve diğer sorunlarla ilgili olarak ActiveState’in sitesindeki FAQ (Sıkça sorulan Sorular) dosyalarına başvurabilirsiniz. Özellikle http://www.activestate.com/ActivePerl/docs/perl-win32/perlwin32faq4.html sayfasında Windows sistemleriyle ilgili geniş bilgi bulabilirsiniz.
ActivePerl’ü kurduktan sonra, küçük bir işlemle, PWS veya IIS’i, uzatması .pl olan dosyaları görüntülenmesi için Perl.exe programını çalıştırmak üzere ayarlamanız gerekir. Bu ayar, Windows’un kayıt dosyasını (Regitry) düzenlemeyi gerektiriyor. Kayıt dosyası, Windows 95/98/NT/2000 sistemlerinin düzgün çalışması için gereklidir; bu dosyada yapılacak bir yanlışlık sistemin tümünü çalışmaz hale getirebilir. Aşağıdaki işlemleri yapmaya başlamadan önce Registry’nin yedeğini almak ve bunu bir diskette saklamlak gerekir. Buna rağmen çalışırken çok dikkatli olmanızı salık veririm.
Şimdi önce Perl.exe’nin yol bilgisini (Path) bir kenara yazın: örneğin c\Perl\bin\perl exe); ve PWS’i durdurun. Sonra 95/98’de Regedit.exe, NT’de Regedt32.exe programını çalıştırın. Soldaki dizide altı ana-kayıt bölümü göreceksiniz. Bunlardan HKEY_LOCAL_MACHINE’nin önündeki artı işaretini tıklayın. Açılacak listede SYSTEM’i bulun ve önündeki artıyı tıklayın. Açılacak listede CurrentControlSet’i bulun; önündeki artıyı tıklayın. Açılacak listede Services satırını bulun ve önündeki artıyı tıklayın; yeni listede W3SVC satırının önündeki artıyı, sonra Parameter satırının önündeki artıyı tıklayın. Şimdi, açılacak lisdede ScriptMap satırını tıklayın. Sağda, “Varsayılan...(değer atanmamış)” satırını görüyor musunuz? Güzel. Şimdi, Düzen menüsünü tıklayın, açılacak listede Yeni, açılacak alt-listede Dize Değeri maddesini seçin. Sağda, “Varsayılan...” satırının altında “Yeni Değer #1” adlı bir satır oluşacak ve bu kelimeler seçilecektir. Klavyede “.pl” yazın (Nokta işareti, p ve l harfleri). Sonra kKlavyede iki kere Enter’a basın; açılacak Dize Düzenle kutusunda “Değer verisi” hanesine kendi sisteminize uygun olan Perl’ün sabit diskteki yol bilgisini (Path) ile birlikte “%s %s” yazın. Örneğin:
c:\Perl\bin\perl.exe %s %s
Burada “%s” yazarken s harfinin küçük harf olmasına dikkat edin; büyük S yazarsanız Perl çalışmaz. Bu bilgiyi girdikten sonra Dize Değeri kutusunun Tamam düğmesini tıklayın. Aynen şu görünümü elde etmiş olmalısınız:
Bu işlem sırasında Dize adını verirken hata yaparsanız, örneğin .pl yerine pl veya .pp yazarsanız, bu kelimeyi sağ tıklayın ve açılan menüden Yeniden Adlandır maddesini seçin. Dize değerini yazarken hata yaparsanız, yine .pl’i sağ tıklayın ve açılan menüden Değiştir maddesini seçin. (Eğer ActivePerl’ün varsayılan değerlerini değiştirmediyseniz, Perl dizininin adının büyük harfle, “bin” dizininin ve programın adının küçük harfle başladığına dikkat edin. %s iki kere kere yazılıyor ve ikisinde de s harfi küçük!)
Regedit’i kapatın. Bilgisayarı kapatıp, açın ve PWS’i başlatın. Şimdi PWS’ınız Perlce bilir hale gelmiş olmalı!
Aynı işlemi NT’de IIS için yapacaksanız, IIS Manager’da Default Web Server’ı durdurun. Regedt32.exe’yi çalıştırdığınızda ve HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Services\W3SVC\Parameter\ScriptMap’i bulunca Edit menüsünden Add Value maddesini tıklayın. Value Name olarak .pl yazın. Data Type olarak Reg_SZ’i seçin ve String Value olarak perl.exe’nin tam Path’ ile perl.exe %s %s yazın. Örneğin:
c:\Perl\bin\perl.exe %s %s
Regedt32’yi kapatın; IIS Manager’dan Default Web Server’ı çalıştırın. Şimdi sizin NT sisteminiz de Perl anlar hale gelmiş olacak.
Ama her iki durumda sistemi sınamak gerekir. Bunun için Not Defterini açıp, şunları yazın:
print "HTTP/1.0 200 OK\n";
print "Content-Type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>MERHABA DÜNYA</TITLE>\n";
print "<meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-9\">\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1254\">\n";
print "</HEAD>\n";
print "<BODY>\n";
print "<H4>Merhaba Dünya</H4>\n";
print "<P>\n";
print "IP adresiniz: $ENV{REMOTE_ADDR}.\n";
print "<P>\n";
print "<H5>Başarılar dileriz!</H5>\n";
print "</BODY>\n";
print "</HTML>\n";
Bu dosyayı merhaba.pl adıyla, PWS’ın kök (root) dizinine kaydedin. Browser’ınızı açın ve adres hanesine kişisel Web Server’ınızın adresi ile birlikte dosyanın adını yazın. Örneğin: http://server/merhaba.pl
Tebrikler! Bir taşla kaç kuş birden vurdunuz. Ve en önemlisi, ilk CGI programınıza “Merhaba Dünya!” yazdırarak, bir geleneği korumuş oldunuz. İlk Perl programımızı yazmış olduk; gerçi şu anda yazdıklarımızın ne işe yaradığını pek bilmiyoruz, ama yukarıda belirttiiğimiz gibi bu programla Server’a bir “iş” yaptırıyoruz. Bu iş, ana hatlarıyla, bir HTML sayfası oluşturmak ve bunu talep eden istemciye göndermesini sağlamaktan ibadet. Kodumuza dikkatle bakarsanız bu işin bölümlerini görebilirsiniz; ama şimdilik bu ayrıntıların üzerinde durmayalım.
Burada önemli olan, Windows sistemimizi Unix’e ait bir dili anlar hale getirmiş ve bunu kurduğumuz kişisel Web Server’ımıza tanıtmış olmamız.