Perl Nedir?[Perl İle İlgili Herşey- CGI]

*reventon*

Uzman üye
28 Eki 2008
1,536
1
PERL NEDİR?

  • Practical Extraction and Report Language
  • LARRY WALL TARARAFINDAN GELİŞTİRİLEN BİR DİL
  • BİRÇOK PLATFORMDA MEVCUT
  • YORUMLANARAK ÇALIŞAN BİR DİL
  • BİRÇOK BAŞKA ARACIN VE DİLİN ÖZELLİLERİNİ ALMIŞ VE/VEYA BERABER KULLANILABİLEN BİR ORTAM (AWK, C v.b.)
  • ASIL KUVETİNİ KÜTÜPHANELERİNDEN ALMAKTA
  • ÇOK BASİTTEN ÇOK KARMAŞIĞA KADAR KULLANIM ALANI BULUNMAKTA
Kod:

#!/usr/bin/perlmy $birincikelime = "Merhaba";my $i = 'Dünya';print $birincikelime.' ',$i;exit;​

Kod:
Merhaba Dünya





******************************


PERL VERİ YAPILARI


  • DEĞİŞKENLER <h3> $değişkenismi ŞEKLİNDE GÖSTERİLİRLER.


  • SAYISAL YA DA KAREKTER İÇERİĞE SAHİP OLABİLİRLER.


  • MANTIKSAL İÇERİK OLARAK ALINDIĞINDA, DEĞİŞKENİN BİR DEĞERE SAHİP OLMASI DOĞRU, BOŞ (NULL) DEĞERE SAHİP OLMASI YANLIŞ ANLAMINA GELİR.


  • Kod:


  • $i = 3;$yazi = "Bu değişkenin ismi yazi'dir...";$k = "5";$flag = ""; </h3>​
  • DİZİLER <h3> @diziismi ŞEKLİNDE TÜM DİZİ,


  • $diziismi[3] ŞEKLİNDE DİZİNİN 3. ELEMANI KASTEDİLİR.


  • Kod:


  • @dizi = ( 1, 2, "text", 7);print $dizi[0]; # 1 yazarprint $dizi[2]; # text yazarprint $dizi[-1]; # 7 yazar </h3>​
  • İLİŞKİLER (HASH) <h3> İNDEX OLARAK, KARAKTER DİZİLERİNİ KULLANAN DİZİLERDİR.


  • %hash ŞEKLİNDE GÖSTERİLİR.


  • Kod:



    • %sesi = ( 'köpek', 'havlar', 'kedi', 'miyavlar', 'kuzu' , 'meler');print $sesi{'kedi'}; # miyavlar yazar</h3>


******************************************



OPERATÖRLER


  • + , ++, -, --, * , ** ,/ GİBİ ARİTMETİK OPERATÖRLERİ
  • <, >, <=, >=, lt, gt, le, ge, ==, !=, <=>, eq, ne, cmp GİBİ KARŞILAŞTIRMA İÇİN KULLANILAN OPERATÖRLER
  • &&, ||, not, or, xor GİBİ MANTIKSAL OPERATÖLER.
  • KARAKTER DİZİLERİ ÜZERİNDE İŞLEM YAPAN OPERATÖRLER <h3> q/STRING/ ---> 'STRING'


  • qq/STRING/ ---> "STRING"


  • STRING1.STRING2 ----> STRING1STRING2</h3>
***********************************






PERL FONKSİYONLARI


  • DEĞİŞKEN VE KAREKTER DİZİLERİ FONKSİYONLARI Kod:


  • <h3>index, hex, substr, uc...</h3>​
  • ARAMA VE EŞLEŞTİRME FONKSİYONLARI Kod:


  • <h3>s///, split...</h3>​
  • SAYISAL FONKSİYONLAR Kod:


  • <h3>abs, rand, cos... </h3>​
  • DİZİ FONKSİYONLARI Kod:


  • <h3>push, shift...</h3>​
  • LİSTE VERİ İÇİN FONKSİYONLAR Kod:


  • <h3>reverse, sort...</h3>​
  • EŞLEMELER İÇİN FONKSİYONLAR Kod:


  • <h3>each, keys, values...</h3>​
  • GİRDİ ÇIKTI FONKSİYONLARI Kod:


  • <h3>print, write, read...</h3>​
  • DOSYA - DİZİN İŞLEMLERİ FONKSİYONLARI Kod:


  • <h3>chmod, open, rmdir...</h3>​
  • PROGRAM AKIŞI İLE İLGİLİ ANAHTAR KELİMELER Kod:


  • <h3>goto, exit, next...</h3>​
  • DEĞİŞKEN GEÇERLİLİĞİ İLE İLGİLİ ANAHTAR KELİMELER Kod:


  • <h3>my, local, import...</h3>​
  • SÜREÇLER İLE İLGİLİ FONKSİYONLAR Kod:


  • <h3>fork, waitpid...</h3>​
  • NETWORK VE SOKET FONKSİYONLARI Kod:


  • <h3>gethostbyname, listen...</h3>​
  • DİĞER FONKSİYONLAR Kod:


  • <h3>getlogin, time...</h3>​
***************************************




ÖZEL DEĞİŞKENLERDEN BAZILARI


  • $ARG, $_, @_
  • @INC, %INC
  • %ENV
  • $ERRNO, $!



****************************************



ALT PROGRAMLAR


  • sub ANAHTAR KELİMESİYLE TANIMLANIR Kod:


  • <h3>sub ISIM;sub ISIM(PROTO);sub ISIM BLOCKsub NAME(PROTO) BLOCK</h3>​
  • PROROTİPLEMEYE İZİN VERİR Kod:


  • <h3>sub buyukkucuk($$){....}</h3>​
  • return ANAHTAR KELİMESİYLE DEĞER DÖNDÜREBİLİR. DÖNDÜRÜLECEK BİRDEN ÇOK DEĞER VARSA, BİR DİZİ KULLANILARAK DÖNDÜRÜLEBİLİNİR.
  • my ANAHTAR KELİMESİYLE TANIMLANAN DEĞİŞKENLER SADECE O BLOK BOYUNCA GEÇERLİDİR.
  • @_ DİZİSİ, ALT PROGRAMA GÖNDERİLEN PARAMETRELERİ İÇERİR. Kod:


  • <h3>sub buyuk($$){my $birinci = $_[0];my $ikinci = $_[1];if (birinci gt $ikinci) { return $birinci;}elsif{ return $ikinci;}}</h3>​
  • ALT PROGRAMLAR EĞER MODÜLLERDEN ÇAĞIRILACAKSA, MUTLAKA YEREL DEĞİŞKEN TANIMLARI YAPILMALIDIR.
*********************************************



MODÜLLER


  • ALT PROGRAMLARIN TOPLANDIĞI KİTAPLIKLARDIR.
  • CPAN ARŞİVİNDEN GENİŞ BİR KİTAPLIK DESTEĞİ ALINABİLİR
package SEMINER:
eek.gif
rnek;


Kod:
# SEMINER/ornek.pm dosyasıuse Exporter ();use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);$VERSION = 0.1;@ISA = qw(Exporter);@EXPORT = qw( &sub1 &sub2 &sub3);%EXPORT_TAGS = ( );@EXPORT_OK = qw($degisken1);use vars @EXPORT_OK;sub sub1{...}sub sub2{...}sub sub3{...}sub sub4{...}1;__END__Ana programuse SEMINER::eek:rnek;sub1();​


**********************************************


PERL VE CGI


  • HAZIR CGI KİTAPLIĞI İLE FORM VE DİNAMİK WEB SAYFASI HAZIRLAMA KOLAYLIĞI
  • WEB TARAYICISI DEĞİŞKENLERİNE KOLAY ERİŞİM.
  • VERİTABANI ARAYÜZLERİ SAYESİNDE, WEB OTOMASYON PROJELERİNDE KULLANIM.
********************************************





PERL VE CGI

Kod:
#!/usr/bin/perluse CGI;$q = new CGI;$KULLANICI = $ENV{"REMOTE_USER"};print $q->header;print $q->start_html('Örnek');print $q->h1('Bu Akedemik Bilişim İçin Hazırlanmış Bir Örnektir.');print $q->p();print "$KULLANICI, seminere hoş geldin...";print $q->end_html;​



exit;



******************************
Tanımlar...

CGI (Common Gateway Interface-Ortak Geçiş Arayüzü), Sunucu ile tarayıcı arasında bir köprüdür diyebiliriz. Klasik HTML'den veya JavaScript gibi dillerden farklı olarak CGI programları sunucuda icra edilir ve sonuç isteğe göre bir veritabanına, düzyazı dosyasına, tarayıcıya veya mail programına gönderilir. CGI programları herhangi bir programlama dili ile yazılabilir. Ancak CGI programcılarının en sık kullandığı dil PERL'dür (Practical Exporting and Report Language). Perl, geliştirilme amacı ve işleyişi bakımından CGI programlamak için en uygun dildir. Biz de yazılarımızı Perl'e göre ayarladık.

CGI ile neler yapılabilir?
Web sayfalarında kullanılan sayaç, anket, ziyaretçi defteri, rastgele reklam, otomatik e-mail hesabına yönlendirilen formlar, alışveriş, müzayede, arama motoru ve daha birçok etkileşimli web uygulaması gerçekleştirilebilir. Bir çok web uygulaması CGI kullanılarak oluşturulmuştur.
Nasıl Çalışır?
Cgi programları bildiğimiz düzyazı dosyalarında saklanır ve uzantıları .pl veya .cgi olarak kaydedilir. Tarayıcıdan bu dosya çağırıldığında, web server bunun bir cgi dosyası olduğunu anlar ve yorumlayıcı satırında belirtilen yorumlayıcıya yorumlaması için gönderir. Yorumlayıcı programın dediklerini yapar ve sonucu tarayıcıya gönderir.

Örneğin 2+3=5 işlemini yapan bir program şu şekilde olabilir;

#!/usr/bin/perl
print "Content-type:text/html\n\n";

$iki=2;
$uc=3;
$toplam=$iki+$uc;

print "2+3= $toplam eder.\n";

Bu kodları windows'un Not Defteri'nde yazıp uzantısını .cgi ya da .pl şeklinde kaydetmek yeterlidir. Bu dosyayı tarayıcıdan çağırdığımızda ekrana "2+3= 5 eder" yazacaktır. Cgi programlarının kodları web server'da icra edildiğinden tarayıcı tarafından görüntülenmez.
Başlamak için neler gerekli?


Perl Unix için geliştirilmiş bir Script(Betik) dilidir. Çoğu Linux dağıtımında Perl standart olarak gelir. Eğer yoksa- Perl.com Home Page adresinden edinebilirsiniz. İşletim sisteminiz Windows 95,98,ME ise Perl derleyicisini kendiniz yükleyip register ayarlarını yapmalısınız. Windows altında CGI Scriptlerini test etmek için, şu adımları uygulayın;

Adım 1: ActiveState Home
adresinden işletim sisteminizin sürümüne uygun perl derleyicisini download edin.
Adım 2: Perl derleyicisini bilgisayarınıza kurduktan sonra, bilgisayarınızın bir web server gibi çalışabilmesi için, bir server kurun. Size tavsiyem, Windows 98,ME cd'lerindeki Personel WebServer olabilir. Personel web server'ın setup programını , cd'nin içindeki Add-ons klasöründe bulabilirsiniz. Sisteminiz NT veya 2000 ise IIS kullanabilirsiniz.

Adım 3: Dikkat! Bu aşama bilgisayarınızın hata vermesine neden olabilir. Olası bir yanlışık sisteminizi bozabilir. Eğer temel bilginiz yoksa, Windows Registry hakkında bilgi edinmenizi tavsiye ederim.

a. Başlat menüsünden Çalıştır'a gelin ve "regedit" yazıp enter'a basın.

b. HKEY_LOCAL_MACHINE\
System\
CurrentControlSet\
Services\
W3SVC\
Parameters\
Script Map

bölümünde, şu string value'ları oluşturmalısınız.

.pl için,
c:\Perl\bin\perl.exe %s %s
.cgi için yine,
c:\Perl\bin\perl.exe %s %s

c.Bilgisayarınızı tekrar başlatın.

d. Scriptlerinizi, Personel Web Server'ın ilk dizini olan (root), c:\inetpub\wwwroot\ dizinine kopyalamalısınız
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.