Papatyam Forum - Tekil Mesaj gösterimi - PERL NEDİR ?
Konu Başlıkları: PERL NEDİR ?
Tekil Mesaj gösterimi
Alt 20 January 2009, 14:43   Mesaj No:1

CoNQueRoR_61

Papatyam Usta Üyesi
Avatar Otomotik
Durumu:CoNQueRoR_61 isimli Üye şimdilik offline konumundadır
Papatyam No : 1397
Üyelik T.: 20 January 2009
Arkadaşları:0
Cinsiyet:
Memleket:istanbul
Yaş:35
Mesaj: 131
Konular:
Beğenildi:
Beğendi:
Takdirleri:10
Takdir Et:
Konu Bu  Üyemize Aittir!
Standart PERL NEDİR ?

PERL NEDİR ?

PERL NEDİR ?
PERL VERİ YAPILARI
OPERATÖRLER
PERL FONKSİYONLARI
ÖZEL DEĞİŞKENLERDEN BAZILARI
ALT PROGRAMLAR
MODULLER
PERL VE CGI

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



PERL VERİ YAPILARI

DEĞİŞKENLER
$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.
$i = 3;
$yazi = "Bu değişkenin ismi yazi'dir...";
$k = "5";
$flag = "";

DİZİLER
@diziismi ŞEKLİNDE TÜM DİZİ,
$diziismi[3] ŞEKLİNDE DİZİNİN 3. ELEMANI KASTEDİLİR.
@dizi = ( 1, 2, "text", 7);
print $dizi[0]; # 1 yazar
print $dizi[2]; # text yazar
print $dizi[-1]; # 7 yazar

İLİŞKİLER (HASH)
İNDEX OLARAK, KARAKTER DİZİLERİNİ KULLANAN DİZİLERDİR.
%hash ŞEKLİNDE GÖSTERİLİR.
%sesi = ( 'köpek', 'havlar', 'kedi', 'miyavlar', 'kuzu' , 'meler');
print $sesi{'kedi'}; # miyavlar yazar


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
q/STRING/ ---> 'STRING'
qq/STRING/ ---> "STRING"
STRING1.STRING2 ----> STRING1STRING2


PERL FONKSİYONLARI

DEĞİŞKEN VE KAREKTER DİZİLERİ FONKSİYONLARI
index, hex, substr, uc...
ARAMA VE EŞLEŞTİRME FONKSİYONLARI
s///, split...
SAYISAL FONKSİYONLAR
abs, rand, cos...
DİZİ FONKSİYONLARI
push, shift...
LİSTE VERİ İÇİN FONKSİYONLAR
reverse, sort...
EŞLEMELER İÇİN FONKSİYONLAR
each, keys, values...
GİRDİ ÇIKTI FONKSİYONLARI
print, write, read...
DOSYA - DİZİN İŞLEMLERİ FONKSİYONLARI
chmod, open, rmdir...
PROGRAM AKIŞI İLE İLGİLİ ANAHTAR KELİMELER
goto, exit, next...
DEĞİŞKEN GEÇERLİLİĞİ İLE İLGİLİ ANAHTAR KELİMELER
my, local, import...
SÜREÇLER İLE İLGİLİ FONKSİYONLAR
fork, waitpid...
NETWORK VE SOKET FONKSİYONLARI
gethostbyname, listen...
DİĞER FONKSİYONLAR
getlogin, time...

ÖZEL DEĞİŞKENLERDEN BAZILARI
$ARG, $_, @_
@INC, %INC
%ENV
$ERRNO, $!

ALT PROGRAMLAR


sub ANAHTAR KELİMESİYLE TANIMLANIR
sub ISIM;
sub ISIM(PROTO);
sub ISIM BLOCK
sub NAME(PROTO) BLOCK

PROROTİPLEMEYE İZİN VERİR
sub buyukkucuk($$){....}
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.
sub buyuk($$){
my $birinci = $_[0];
my $ikinci = $_[1];
if (birinci gt $ikinci) {
return $birinci;
}
elsif{
return $ikinci;
}
}


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:rnek;

# 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 program

use SEMINER: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.





CGI ile neler yapabiliriz?

CGI dosyaları az önce de belirttiğim gibi server'a bir takım komutlar verip "iş" yaptıran programcıklardır. CGI dosyalarıyla web sitenizin ziyaretcilerle etkileşimini sağlayabilirsiniz. Onların görüşlerini ve önerilerini öğrenebilirsiniz. Bir takım bilgiler alıp dosyalara kaydettirebilir, daha sonra bu dosyaları inceleyip ziyaretcilerinizin görüşlerini öğrenebilirsiniz. Anket programlarıyla insanların istediğiniz konu hakkında düşüncelerini ve oranları öğrenebilirsiniz. Ziyaretci defteri hazırlayıp ziyaretcilerinizin görüşlerini alabilirsiniz. Forum programlarıyla insanların bilgilerini paylaşabilecekleri ortamlar hazırlayabilirsiniz. Mail formlarla ziyaretcileriniz web üzerinden size e-mail gönderebilmelerini sağlayabilirsiniz. Bunun dışında Toplist, mesaj tahtası vs. gibi programlarla hem web sitenize içerik katarsınız, hem de ziyaretci sayınızı arttırabilirsiniz.

Perl ile sadece internette değil kendi bilgisayarınızda çalışan, bi takım işlerinizde pratiklik kazandıracak programlar da yapabilirsiniz.

Perl öğrenmek zor ve zahmetlidir ama sonucunda bir "programlama dili" öğrenmiş olursunuz ve ilerde başka bir programlama diline geçtiğinizde özellikle döngüler ve değişkenler konusunda çok rahat edersiniz.

Perl öğrenmek için ortalama html bilgisine (genel kodlar, özellikle form ve input etiketleri) sahip olmanız gerekiyor.
Buradaki örnek kodları mecbur kalmadıkca ya da kendi yazdığınız kodlarla karşılaştırmak gerekmedikce kullanmamanızı tavsiye ederim, kodları kendiniz yazarsanız hem eliniz alışır hem de hata yapa yapa hata yapmamayı, hatasız kod yazmayı öğrenirsiniz. Örnek kodları zip'li halde buraya tıklayıp indirebilirsiniz.



PERL DE MANTIKSAL SINAMA....


Perl'de Mantıksal Sınama :

Perl ile formdan gelen ya da bir şekilde elde ettiğimiz veriyi mantıksal sınamaya tabi tutabilir ve programı buna göre yönlendirebiliriz. Perl'de mantıksal sınamalar şu şekildedir:

>Sayısal değerlerde mantıksal sınama :

İşlem Anlamı
x > y x büyüktür y'den
x < y x küçüktür y'den
x >= y x büyük eşittir y'ye
x <= y x küçük eşittir y'ye
x == y x eşittir y'ye
x != y x eşit değildir y'ye


>Sayısal olmayan değerlerde mantıksal sınama:

İşlem Anlamı
a eq b a eşittir b'ye
a ne b a eşit değildir b'ye
a lt b a küçüktür b'den
a gt b a büyüktür b'den
a le b a küçük eşittir b'ye
a ge b a büyük eşittir b'ye


Buna göre perl'ile bir veri ya da değişken üzerinde mantıksal sınama yapmak için bu verinin ya da değişkenin içeriğinin sayısal olup olmadığını bilmemiz gerekiyor.

>Mantıksal sınama if, elsif, else fonksiyonları :

Yukarıda sayısal değerlerde ve sayısal olmayan değerlerde (string) karşılaştırma operatörlerini gördünüz ama ne işe yaradıklarını bilmiyorsunuz. Bu operatörler perl'de karşılaştırma yapmaya olanak verir ve bunu da if(), elsif() ve else() komutlarıyla sağlarız. Kullanımı şu şekildedir:

if (koşul) {
koşul sonunda yapılacak işlem
}
elsif(koşul) {
koşul sonunda yapılacak işlem
}
else {
bu iki (ya da daha fazla) koşulun gerçekleşmemesi durumunda yapılacak işlem
}

Buna göre iki rakamı form vasıtasıyla programa gönderelim, program bize bu iki rakamı karşılaştırıp sonucunu ekrana yazsın :



#!/usr/bin/perl

# if1.cgi

use CGI qw(:standard);

print "Content-type:text/html\n\n";

$query = new CGI;

$ilksayi = $query -> param('ilksayi');
$sonsayi = $query -> param('sonsayi');

print "<html><body>";

if ($ilksayi ne "" or $sonsayi ne "&quot {

if ($ilksayi == $sonsayi) {

print "ilksayı($ilksayi) ile ikinci sayı($sonsayi) eşit!";

}

elsif ($ilksayi != $sonsayi) {

print "ilksayı ($ilksayi) ile ikinci sayı($sonsayi) eşit değil!";

}
}





print "<br>";
print "<form action=if1.cgi method=post>";
print "Birinci sayı: <input type=text name=ilksayi><br>";
print "İkinci sayı: <input type=text name=sonsayi>";
print "<input type=submit value=Karşılaştır>";


print "</body></html>";



İlk "if" karşılaştırması dikkatinizi çekti mi? Bu ilk karşılaştırma sayesinde eğer formdan veri gelmemişse sadece form görünüyor, formdan veri gelmişse karşılaştırma yapılıyor ve altında yine form gösteriliyor böylece programın saçmalamasını önlüyoruz.

Aynı şeyi bir de sayısal olmayan değerlerle, yani harflerle yapalım. Mesela formdan gönderilen veriler bizim ismimize eşitse ekrana "Senin isminle benim ismim aynı, biz adaşız" yazdıralım, değilse "isimlerimiz aynı değil, biz adaş değiliz" yazdıralım :



#!/usr/bin/perl

# if2.cgi

$benim_ismim = "hakan";

use CGI qw(:standard);

print "Content-type:text/html\n\n";

$query = new CGI;

$isim = $query -> param('isim');

print "<html><body>";

if ($isim ne "&quot {

if ($isim eq $benim_ismim) {

print "Bizim isimlerimiz aynı, biz adaşız!";

}

elsif ($isim ne $benim_ismim) {

print "İsimlerimiz aynı değil, biz adaş değiliz";

}

}




Perl'de matematiksel işlemler :

Matematik ile aranız nasıl bilmiyorum ama gerçek CGI programları yazmaya başladığınızda programlarınızın içinde mutlaka matematiksel işlemler yapmak zorunda kalacaksınız. Bu işlemler çok karmaşık işlemler olabileceği gibi değişkenleri toplama, çıkarma, döngü sırasında bir değer arttırma şeklinde de olabilir. Bu derste perl ile yapabileceğimiz matematiksel işlemleri ele alacağız.

Perl ile dört işlem :

Perl ile sayıları ya da sayı içerikli değişkenleri toplayabilir, çıkarabilir, bölebilir ya da çarpabiliriz. Örneğin elimizde şu değişkenler var :

$a = 1;
$b = 2;
$c = 3;
$d = 4;

Önce $a ile $b'yi toplayalım :

$sonuc = $a + $b;

print $sonuc;

Bu kod ekrana $sonuc değişkenin değerini yani "3" yazdıracaktır. $b değişkeninden $a değişkenini çıkarmak için ise şöyle bir kod yazmamız gerekir :

$sonuc = $b - $a;

print $sonuc;

Bu kod da ekrana "1" yazdıracaktır. Çarpma işlemi ise şu şekilde :

$sonuc = $b * $d;

print $sonuc;

Bu kod da $b değişkeni ile $d değişkenlerinin değerlerini çarpıp sonucu $sonuc değişkenine atar ve ekrana "8" yazdırır. Bölme işlemi ise şu şekilde :

$sonuc = $d / $b;

print $sonuc;

Bu kod da $d değişkeninin değerini $b değişkeninin değerine böler (4 / 2), sonucu $sonuc değişkenine atar ve ekrana yazdırır. Eğer birden fazla işlem yapmak istiyorsak, mesela önce $a, $b, ve $c değişkenlerini toplayıp sonuçtan $d değişkenini çıkarmak istiyorsak şu şekilde bir kod kullanmamız gerekir :

$sonuc = ($a + $b + $c) - $d;

print $sonuc;

Bu kodla program önce $a, $b ve $c değişkenlerinin değerlerini toplar, sonra çıkan sonuçtan $d değişkeninin değerini çıkarır ve sonucu (6-4 = 2) ekrana yazar.

Dört işlem için bu kadar örnek fazla bile. Şimdi öğrendiğimiz bilgilerden daha "işe yarar" bir örnek yapalım. Örneğimiz formdan gelen iki sayı üzerinde işlem yapsın. Bu işlem yine ziyaretcinin (yani bizim) seçtiğimiz işlem olsun. Yani kısaca dört işlem yapabilen basit bir hesap makinası yapalım :



#!/usr/bin/perl

# hesapla.cgi

use CGI qw(:standard);

print "Content-type:text/html\n\n";

$query = new CGI;

$sayi1 = $query -> param('sayi1');
$sayi2 = $query -> param('sayi2');
$islem = $query -> param('islem');

print "<html><body>";

if ($islem ne "&quot {

if ($islem eq "topla&quot {

$sonuc = $sayi1 + $sayi2;
print "İşlem sonucu : $sonuc";

}

elsif ($islem eq "cikar&quot {

$sonuc = $sayi1 - $sayi2;
print "İşlem Sonucu : $sonuc";

}

elsif ($islem eq "bol&quot {

$sonuc = $sayi1 / $sayi2;
print "İşlem Sonucu : $sonuc";

}

elsif ($islem eq "carp&quot {

$sonuc = $sayi1 * $sayi2;
print "İşlem Sonucu : $sonuc";

}
}

print "<form action=hesapla.cgi method=post>";
print "<input type=text name=sayi1> sayısı ile ";
print "<input type=text name=sayi2> sayısını ";
print "<select name=islem>";
print "<option value=topla>Topla<br>";
print "<option value=cikar>Çıkar<br>";
print "<option value=bol>Böl<br>";
print "<option value=carp>Çarp<br>";
print "</select>";
print "<input type=submit value=YAP!>";
print "</form>";

print "</body></html>";









Perl ile ileri matematik işlemleri de yapabilirsiniz. Mesela :

$sayi = 12;

$karekok = sqrt($sayi);

print $karekok;

Bu kod sqrt() fonksiyonu ile $sayi değişkeninin değerini $karekok değişkeninin değerine atar ve ekrana 12'nin karekökünü yazdırır.

$sayi = 12;

$log = log($sayi);

print $log;

Bu kod log() fonksiyonunu kullanarak $sayi değişkeninin logaritmasını alır, $log değişkenine atar ve ekrana yazdırır. Aynı şekilde exp() fonksiyonu ile sayının exponensiyelini, int() fonksiyonu ile sayının integerini, abs() fonksiyonu ile sayının mutlak değerini bulabilirsiniz.



Perl ile dosya işlemleri :

Perl sunucu tarafında çalışan bir dildir dedik. Perl vasıtası ile sunucu tarafında yani web alanında dosya açabilir, açtığımız dosyaya kayıt yapabilir -ya da ekleme yapabilir- , dosyadan belli bir kaydı silebilir ya da dosyayı silebiliriz. Perl'in bize sağladığı bu olanağı kullanarak açtığımız herhangi bir dosyayı veritabanı olarak kullanabiliriz. Perl ile server'da varolan ya da varolmayan bir dosyayı open() fonksiyonu kullanarak açarız. open() fonksiyonu ile dosyayı açtıktan sonra dosyayı bir "file handle" olarak tanımlar ve dosya üzerinde işlem yapıp dosyayı kapatana kadar da bu "file handle" ı kullanırız.

Yeni dosya oluşturma ve kayıt yapma :

Dosyayı açtıktan sonra formdan gelen ya da herhangi bir şekilde elde ettiğimiz veriyi istediğimiz formatta dosyaya print "..."; şeklinde yazdırabiliriz. Bunun için eğer dosyaya yazarken eski bilgilerin üzerine yazılmasını, eski bilgilerin silinmesini istiyorsanız open fonksiyonu şu şekilde kullanılmalıdır:

open (HANDLE, ">dosya.dat"

HANDLE yazan yer "file handle" dediğimiz, daha sonra dosya üzerinde işlem yaparken kullanacağımız takma isimdir. Dosyalara isim verirken Türkce karakter kullanılmaz, küçük harf kullanmanın bir sakıncası olmamasına karşın genelde büyük harf kullanılır. Dediğim gibi dosyaya yazarken eski bilgilerin silinmesini istiyorsanız dosyayı açarken dosyadan önce bir tane büyüktür (&gt işareti kullanmanız gereklidir. Eğer kayıt yaparken eski dosyadaki bilgileri muhafaza etmek istiyorsanız dosya adından önce iki tane büyüktür (>&gt işareti kullanmanız gerekir.

open (HANDLE, ">>dosya.dat"

Bu şekilde dosyaya yazdırdığınız bilgiler eski bilgilerin üzerine değil, bir alt satırına kaydedilir.

Örnek :

#!/usr/bin/perl

# dosya1.cgi

use CGI qw(:standard);

print "Content-type:text/html\n\n";

$query = new CGI;

$isim = $query -> param('isim');
$soyad = $query -> param('soyad');

if ($isim eq "" or $soyad eq "&quot {

print "<html><body>";
print "<br>";
print "<form action=dosya1.cgi method=post>";
print "Lütfen isminizi yazın: <input type=text name=isim><br>";
print "Lütfen soyadınızı yazın: <input type=text name=soyad><br>";
print "<input type=submit value=Yolla!></form></body></html>";

exit;

}

open (DOSYA, ">>veri.txt"
print DOSYA "$isim|$soyad\n";
close (DOSYA);

print "Verdiğiniz bilgiler başarıyla <a href=veri.txt>veritabanına</a> kaydedildi.";





Örnekte isim ve soyad isteyen, verildiğinde bu isim ve soyadı "|" karakteri ile ayırıp dosyaya kaydeden bir program yaptık. Program her "Yolla" butonuna bastığınızda gönderdiğiniz isim ve soyadı programla aynı klasördeki "veri.txt" dosyasına kaydedecek, eğer böyle bir dosya yoksa oluşturup öyle kaydedecektir. Daha sonra bu veritabanını "|" karakterinden bölerek ekrana yazdırabiliriz. Eğer dosyayı açarken iki büyüktür (>&gt yerine sadece bir tane kullansaydık program her seferinde veri tabanına sadece bir tane kayıt yapardı.

Dosya açıp dosya içeriğini ekrana yazdırma :

Daha önce kayıt yapılmış bir dosya içeriğinin ekrana yazdırılması için şu işlemler yapılır: önce open() fonksiyonu kullanılarak dosya açılır, dosya içeriği bir değişkene (tek satırsa tekil, birden fazla satırsa dizi) atanır, daha sonra close () fonksiyonu ile açılan dosya kapatılır, bu dizi değişken direk print "@dizi"; şeklinde ya da bir döngü kullanılarak ekrana yazdırılır. Dosya açılırken dosya adından önce hiç işaret kullanılmaz ya da bir tane küçüktür (&lt işareti kullanılır. Dizi değişken ekrana yazdırılırken veri dosyası içeriğine göre belli yerlerden (örneğimizde "|" karakterinden) split () fonksiyonu yardımıyla bölüm değişkene atanabilir.

Örnek :

#!/usr/bin/perl

# dosya2.cgi

print "Content-type:text/html\n\n";

open (DOSYA, "veri.txt"
@veriler = <DOSYA>;
close (DOSYA);

print "Veritabanı içeriği<br><br>";

print "İsim - Soyad<br>";

foreach $dongu (@veriler) {
($isim, $soyad) = split (/\|/, $dongu);
print "$isim - $soyad<br>";

}






Örnekte bir öneki örnekte oluşturduğumuz veritabanı dosyasını açtık, @veriler dizi değişkenine atadık, dizi değişken için foreach döngüsü oluşturduk, döngü boyunca satırları split () fonksiyonu ile "|" karakterinden bölüp $isim ve $soyad adlı değişkenlere atadık ve bu değişkenleri teker teker ekrana yazdırdık.

Perl ile web üzerinden mail gönderme :

Perl ile linux server'larda (genelde CGI/Perl destekleyen server'lar linux işletim sistemi kullanır) sendmail programı kullanılarak direk web üzerinden, herhangi ek program kullanmadan ziyarecti tarafından mail gönderilmesini ya da programın kendi kendinin bir şart oluştuğunda size ya da programın gidişatına bağlı olarak başka bir kimseye mail gönderilmesini sağlayabilirsiniz.

Sendmail :

Sendmail programı Linux server'larda web üzerinden mail gönderilebilmesine olanak veren bir programdır. Bu program aracılığıyla yazdığımız CGI programları ile web üzerinden mail gönderebilmemiz için sendmail'in linux server'ına göre tam yolunu bilmemiz gereklidir. Bu yol genellikle şu şekillerdedir :

/usr/sbin/sendmail
/usr/bin/sendmail

Eğer server'daki sendmail yolunu bilmiyorsanız sunucu anasayfasında sunucu ile ilgili sıkca sorulan sorular bölümünde (FAQ) bulabilirsiniz ya da server adminlerine yazıp öğrenebilirsiniz. Windows altında sendmail programı bulunmadığı için az sonra yapacağımız yöntemle windows altında mail gönderemezsiniz.*


Mail göndermek için önce mail programını open (MAIL, "|/usr/sbin/sendmail" şeklinde mail programını açarsınız, daha sonra aynen mail gönderiyormuş gibi şu bölümlere gerekli yazıları ya da değişkenleri yazarsınız:

print MAIL "From: kimden\@mail.com";

Bu bölüme mailin kimden gönderildiğini yazmanız gerekiyor.

print MAIL "To\:kime\@mail.com\n";

Buraya mailin hangi adrese gitmesini istiyorsanız onu yazmalısınız.

print MAIL "Subject\: Mesajın konusu\n\n";


DEVAMI ALTTA
__________________
Biz Bu Hallere Düşecek Adammıydık ???
Alıntı ile Cevapla