Etiket arşivi: perl

Perl ile web programlamaya giriş


perl

 

Perl ile web programlama yapabilmek için sunucunuzda perl yüklü olması gerekiyor. Para vermek istemiyor fakat perl dilini öğrenmek istiyorsanız evdeki bilgisayarınıza perl yükleyip denemelerinizi burada yapabilirsiniz. Perl dilinin nasıl yükleneceği ile ilgili çok sayıda kaynak mecvut, özellikle ingilizce olarak. İlerleyen zamanlarda belki ben de burada bununla ilgili bir anlatım yapabilirim.

Bu yazıda perl dilinin web programlama ile ilgili kısmına kısaca değineceğim ve verdiğim örneği perl destekleyen bir sunucu için vereceğim.

Öncelikle çok basit olan fakat hiçbiryerde bulamayıp sonradan öğrendiğim bir bilgiyi paylaşacağım: “Perl ile programlanmış web sayfası hangi uzantıda olmalıdır?”. Evet gerçekten bu sorunun cevabını net olarak hiçbiryerde bulamadım, en sonunda tesadüfen bir sitede rastgeldim ve .cgi olduğunu öğrendim. Aslında bazı yerlerde .pl olarak da bahsedilmiş fakat benim kullandığım hosting firması yüzünden mi bilmiyorum, .pl uzantıda attığım dosyaları perl olarak algılamıyor.

Öncelikle perl ile ekrana basit bir cümle yazdırmayı göstereceğim ve bunu web sayfası üzerinden yapacağız.

Burada önemli olan bir durum daha var ki, sunucunuzda perl’in nerede yüklü olduğunu bilmeniz. Genelde /usr/bin/perl adresinde yüklü olan perl bazen /usr/local/bin/perl adresinde de yüklü olabiliyor. Bunu öğrenmek için ssh aracılığı ile which perl komutunu girebilirsiniz, size perl’in hangi dizinde yüklü olduğunu söyleyecektir bu komutun verdiği çıktı. Perl’in /usr/bin/perl adresinde yüklü olduğunu varsayarak sayfanın başına koymamız gereken satırı yazacağım. Bunu yazdığımız bütün perl sayfalarında sayfanın en üstüne koymamız gerekiyor.


#!/usr/bin/perl

Bu satırı sayfanın başına yazdıktan sonra perl istemcisine bunun bir html sayfası olduğunu belirtmemiz gerekiyor, bunu da yazdığımız her html/perl sayfasının başına bir alt satıra ekleyeceğiz.


print "Content-type: text/htmlnn";

bunları ekledikten sonra sayfamızın üst kısmı şu şekilde gözükecek:


#!/usr/bin/perl

print "Content-type: text/htmlnn";

şimdi de ekrana bir yazı yazdıralım.


#!/usr/bin/perl

print "Content-type: text/htmlnn";

print "Merhaba turkacademyn";

Burada dikkat ettiyseniz print yani yazdırma komutunun içinde yazdırdığım cümlenin sonuna n şeklinde birşey ekledim. Bunun anlamı yeni bir satıra geçmek istediğimizi belirtmektir. Bunu eklememiş olsaydım yazdırdığım print komutları birleşik yazılmış gibi görülecekti.

Tabiki siteye index.cgi isminde dosya oluşturup içine bu komutları yazdırıp siteye atmayla bu iş bitmiyor. Bunu yaptığınızda muhtemelen “internal server error 500” şeklinde bir hatayla karşılaşırsınız.

Burada dikkat etmeniz gereken şey, kodları yazdığınız metin editöründe sayfa kodlaması kısmını “ascii” ya da “binary” şeklinde ayarlamanız ve yüklediğiniz dosyanın, dosya izinlerini 755 yapmanız gerektiğidir.

Sayfa kodlamasını şu yüzden ascii ya da binary olarak ayarlıyoruz, eğer bunu yapmaz da başka bir kodlama şeklini seçersek kullanılan metin editörü gizli olarak ek karakterler ekleyebiliyor sayfaya, bu da yazılan programın çalışmasını bozuyor. Bu her zaman hata verecek diye birşey yok fakat hata alabilirsiniz ascii ya da binary şeklinde kodlama yapmazsanız.

Sayfa iznine gelince dosya izinlerini 755 olarak ayarlamadığınız taktirde yazdığınız program çalışmayacaktır. Bu önemli fakat gözden kaçabilen bir adım aslında. Burada sorun olan şey her seferinde programı upload ettiğinizde sayfa izinlerinin 755 değil de başka bir standartta, izinlerini yeniden düzenleyebilmesidir. Bunu engellemek için netbeans’de bulunan, dosya izinlerini bulduğun gibi bırak şeklinde bir ayar var fakat netbeans ascii ya da binary desteklemiyor karakter seti olarak, yani netbeans’de çalışırken sayfa izinlerini düzelteyim derken karakter hatası yüzünden programınız çalışmayabilir.

Notepad++ güzel bir editör perl yazmak için fakat bunda da dosya izinleri sorunu oluyor, Notepad++ üzerinden ftp ye bağlanma eklentisini kullandığınızda her seferinde dosya izinleri 604’e düşüyor ve tekrar başka bir ftp clientinden bağlanıp dosya izinlerini 755’e ayarlamanız gerekiyor. Komodo edit ismindeki perl editörü de Notepad++ ile aynı durumda. Karakter kodlaması olarak tamam fakat dosya izinleri olarak bir çözüm yok.

Perl’de program yazarken bu tarz sorunlar karşınıza çıkabilir fakat dediğim işlemleri yaparsanız, hatasız sorunsuz bir şekilde ekrana yazı yazdırabilmeniz lazım, bu da bir başlangıçtır sonuçta.

Web programlama için hangi diller kullanılmalı?

Verimli bir şekilde web programlama yapabilmek için bir dil yetmez, programlayacağınız sitede kullanacağınız içeriğe ve yapıya göre kullanacağınız dil de değişir.  Aşağıda bazı web dillerinin açıklamalarını yaptım.

HTML

Bütün web siteleri html dilini kullanmak zorundadır, html bir web sitesinin temel yapısını oluşturur, zaten bir programlam dili değil, yapı dilidir. Yani html dili ile sitenin ne tür içeriklerden oluştuğunu, hangi yapıda olduğunu belirtirsiniz.

PHP

Php bir programlama dilidir. Size bunu açıklamak için düz tanım yapmak yerine php ile neler yapılabileceğini kısaca özetleyeyim. Php, html gibi bir yapı dili değildir, html ile tamamen uyumludur, html kodlarınızın arasına php taglarınızı açıp kapayarak php kodlarınızı yerleştirebilirsiniz. Web programlamaya yeni başlayan arkadaşlar “html varken php’ye neden ihtiyaç duyayım?” gibi bir yanılgıya düşebilir.  Bunu şu şekilde açıklayabilirim. Bütün sayfalar ziyaretçiye html kodları ile gönderilir, hangi dilde programlama yaparsanız yapın mutlaka html kodu olacaktır, peki her sayfayı tek tek html ile oluşturabilir miyiz? tabiki hayır. Bu işi bizim yerimize php yapıyor, işte php ve benzeri web programlama dillerinin kolaylığı da buradan geliyor. Sitenizde yüzlerce sayfalık içerik olduğunu düşünün, her bir sayfa için tek tek html kodlamak çok uzun süre ve emek isteyecektir, işte bu süreyi kısaltmak ve içerik eklerken, değiştirirken, silerken her seferinde programlama yapmamak, bir iki tıkla işlerimizi halletmek için php vb. dillere başvuruyoruz.

ASP ve ASP.NET

Bu diller de tıpkı php gibi, aynı mantıkla oluşturulmuş dillerdir, genelde php ve asp teknolojileri birbirine rakip olarak görülür, web programlamaya başlayan kişiler genelde asp mi php mi diye düşünür, fakat bu düşünce gereksizdir. Tabiki php ve asp teknolojilerinin birbirine göre üstün ve zayıf olduğu yönler var fakat birinde yapılan işi diğerinde de eksiksiz olarak yapabilmekteyiz, bu açıdan tek farkı programlama biçimi gibi düşünülebilir. Kolaylık açısından ben php yi daha kolay bulduğum için asp ve asp.net ile çok ilgili değilim, muhtemelen bu blog’da da asp ve asp.net ile ilgili bir bilgi veremeyeceğim.

PERL

Perl daha çok sistem adminleri için uygun bir dil diyebiliriz, eğer sunucu yönetmekle ilgileniyorsanız perl sizin için en uygun dil. Çok karmaşık işleri çok kısa bir sürece yapmaya olanak tanıyor. Özellikle metin işleme, arama benzeri işlemlerde de oldukça güçlü, fakat perl ile ilgili web programlama açısından kaynak bulmak kolay olmayabiliyor, ben de elimden geldiğince anlatmaya çalışacağım.

SQL

SQL veritabanı ile iletişim kurmak için oluşturulmuş bir dildir. Web sitelerinde çok sayıda sayfadan oluşan içerikler, çok sayıdaki kullanıcılar, sürekli değiştirilmek istenen ayarlar gibi, istenildiği anda müdahale edilmesi istenen veriler, veritabanında bulundurulur. Bu ne işe yarıyor? Kısaca, programlama yaptığımız sayfaları düzenlemeden içeriği değiştirmeden içeriğe direk site üzerinden veya kendi hazırladığımız yönetici paneli üzerinden müdahale edebilmemizi sağlıyor. Veritabanı sistemleri çok sayıda veriyi kolayca saklamak, okumak, değiştirmek, silmek için oluşturulmuş sistemlerdir, SQL de bu sistemle iletişim kurabilmek için oluşturulmuş bir dildir. Php programlarken de sıkça sql ile iletişime geçeceğiz.

CSS

Stil, sunum dilidir. Sayfanın görünümü ile ilgili çok ayrıntılı düzenlemeler yapmak , efektler vermek için kullanacağımız bir dildir. Günümüzde css olmadan programlanan web sitesi yoktur, eskiden sitenin görünümü html kodlarıyla oluşturulurdu, artık html tamamen bir yapı dili oldu, görünüm ile ilgili kısımlar için css kullanılıyor.

JAVASCRIPT

Sayfada dinamik etkileşim yaratmayı sağlayan bir programlama dildir. Javascript’in uygulama alanı çok geniş, tanım için google’da pek çok kaynak bulabilirsiniz.

JQUERY

Günümüzdeki en popüler javascript kütüphanesidir, sayfalarca javascript kodu yazmak yerine bir iki satır jquery koduyla aynı işi yapabiliyorsunuz, güzel bir teknoloji.

AJAX

Genelde sayfanın tamamını yenilemeden, belli bir kısmını yenilemek için kullanılır, en çok bu amaçla kullanılıyor. Bir dil değildir, programlama tekniğidir diyebiliriz. Javascript ile xml in birlikte kullanımından oluşuyor.