Perl - Tutorial ringkas untuk programer :)
Mengapa perl ?Bagi mereka yang biasa dengan windows programming, perl adalah sangat tidak popular. Tetapi bagi peminat linux, perl adalah bahasa "kebangsaan" mereka. Kenapa tiba tiba belajar perl, kenapa? macam biasalah bila ada kerja yang memerlukan perl. Maka setelah itu terhasillah sebuah nota kecil tutorial perl. Nota hanya sesuai dibaca oleh mereka yang pernah belajar programming, mengapa ? kerana ianya akan hanya difahami oleh golongan tersebut sahaja!!. Jika anda tidak percaya, anda boleh boleh cuba :)
Pembolehubah
perl menggunakan predfine ($ @ %) untuk mewakili pembolehubah. Menagapa? untuk mudah dibaca :)
$nama="Ali"
print "Nama saya ialah $nama\n"
operator
$num1 = 2;
++$num1;
$num1--;
$num1*=2; # $num1= $num1*2 (# tanda komen)
nota
** = exponent
% = modulus (baki)
Subrutin
$num1=3;
$num1*=5;
&cetakjawapan;
sub cetakjawapan {
print "\$num1 ialah $num1\n";
}
Perbandingan
$hari ="ahad";
if ($hari eq "ahad") {
print "Tido laa\n";
}
True atau false
Semua nilai adalah true kecuali "","0"
semua numbor adalah true kecuali 0
semua pembolehubah yang tidak diistiharkan adalah false
if ($x=10) #semuanya true $ telah dumpukkan kepada $x
if ($x==10) # penyataan if
if ($nama1 lt $nama2) #perbandingan string
Input
print "Masukkan nama : ";
$nama=
print "Selamat datang $nama !n";
print "Masukkan nama : ";
chop($nama=
print "Selamat datang $nama !n";
Array
@nama=("ali","abu","ahmad");
print "Kandungan \@nama ialah @nama\n";
print "Kandungan element kedua ialah $nama[1] \n";
print "Kandungan dua elemen pertama ialah @nama[0,1] \n";
print "Kandungan 3 elemant pertama ialah @nama[0..2] \n";
for ($x=0; $x <= $#nama; $x++) { #fenin # boleh refer kat kandungnan pulak print "$nama[$x]\n"; }
atau
foreach $namamereka (@nama) {
print "$namamereka";
}
atau
foreach (@nama) {
print "$_"; # patern searching
}
Gelung tak berhenti
while (1) {
$x++; print "$x : tekan Ctrl C untuk berhenti";
}
Pemprosesan array
@nama=("ali","ahmad","Hasan");
@Kampung=("Tekek","Durian Burung","Paloh","Sg Besi");
print "@nama\n";
push (@nama,"Ayam",@Kampung[1..3]); #tambah elemnet array
&cetaknilai;
$last = pop(@Kampung); #buang element akhir array
&cetaknilai;
unshift (@Kampung, $last); # tambah nilai diawal array
cetaknilai;
shift(@Kampung); #buang element array dari awal
cetaknilai;
$tengah = splice (@Kampung, 1,2); # potong namaarray,offset,bilangan
print "Setelah di slice : $tengah \n";
sub cetaknilai {
print "nama : @nama\n; print "Kampung : @Kampung\n;
}
regex ?
$_ = "saya sudah makan";
if ($_=~/saya/) { print "ada perkataan saya\n};
if (/sudah/) { print " ada perkataan sudah\n}; # =~ diabaikan
if (/suDah/i) { print "ada perkataan suDah\n}; # i untuk case sansitive = false
if (/joe/) {print "ada perkataan joe \n}; #memang takde pun
@nama=qw (abu ali hasan); # qw ialah delimiter space/tab
if (/[AdC]bu/) #pilih perkataan dimulakan dengan A d atau C
if (/[a-z]bu/)
if (/^a/) #benar hanya diawal perkaataan ada huruf a
Hash
-array yang mengunakan string sebagai index
%negeri =('P,Pahang','S,Selangor','K,Kedah');
print "Masukkan kod negeri :";
chop($dicari=
$dicari=~/a-z/A-Z/;
print "$negeri{$dicari} menggunakan kod $dicari \n;
print keys %negeri; #semua kod
print values %negeri #semua nilai
print @country('S','P'); #sebahagian
print scalar (keys %negeri) # berapa banyak
print "Adakah wujud $negeri{'S'}; #wujud ke ?
foreach (sort keys %negeri) { # sort
print "Kod $_ ialah negeri $negeri{$_} \n;
}
%negeri1('2','Pahang','4','Selnagor','1','Kedah');
foreach (sort {$a <=> $b} keys %negeri1) { #ni spaceship operator = sat haaa (sorting menggunakan nilai string bukan nilai nombor
print "$_ $negeri{$_} \n";
}
Grep dan Map
- cari data dalam array dan membina aray lain bedasarkan data yang dijumpai
@stuff=qw(flying gliding skiing dancing parties racing); # quote-worded list
@new = grep /ing/, @stuff; # Creates @new, which contains elements of @stuff
# matching with 'ing' in them.
print join ":",@stuff,"\n"; # first makes one string out of the elements of @stuff, joined
# with ':' , then prints it, then prints \n
print join ":",@new,"\n"; kalau nak pakai blok pun takpe
@stuff=qw(flying gliding skiing dancing parties racing);
@new = grep { s/ing// if /^[gsp]/ } @stuff;
print join ":",@stuff,"\n";
print join ":",@new,"\n"; mapped - pula cuma mengebalikan nilai 1 jika ada data yang dijumpai
@stuff=qw(flying gliding skiing dancing parties racing);
print "There are ",scalar(@stuff)," elements in \@stuff\n";
print join ":",@stuff,"\n";
@mapped = map /ing/, @stuff;
@grepped = grep /ing/, @stuff;
print "There are ",scalar(@stuff)," elements in \@stuff\n";
print join ":",@stuff,"\n";
print "There are ",scalar(@mapped)," elements in \@mapped\n";
print join ":",@mapped,"\n";
print "There are ",scalar(@grepped)," elements in \@grepped\n";
print join ":",@grepped,"\n";
$namafail="c:\script\file.txt";
open INPUTFILE, $namafail or die "gagal membaca $namafail !";
while (
print "data $. ialah : $_";
}
$namaoutput="c:/script/out.txt";
open OUT, ">$namaoutput" or die "Gagal";
for $i (1..10) {
print OUT "$i : masa sekarang : ", scalar(localtime),"\n";
}
close OUT
nota
open OUT,">>$namaoutput" untuk append data
Argument
foreach (@ARGV) {
print "$_";
}
Nak tengok contoh yang lagi power sample kat bawah nie, tak larat nak terjemah laaa.
@ARGV="c:/scripts/out.txt";
$^I=".bk"; # let the magic begin
while (<>) {
tr/A-Z/a-z/; # another new function sneaked in
print; # this goes to the temp filehandle, ARGVOUT,
# not STDOUT as usual, so don't mess with it !
}
contoh 2
$SHOP="shop.txt";
$/="\n\n";
open SHOP or die "Can't open $SHOP for read: $!\n";
while () { $SHOP="shop.txt";
push (@list, $_);
}
foreach (@list) {
print "Items are:\n$_\n\n";
}
contoh 3
$/="\n\n";
open SHOP or die "Can't open $SHOP for read: $!\n";
@list=; # dumps *all* of $SHOP into @list, not just one line.
foreach (@list) {
print "Items are:\n$_\n\n";
}
}
Selamat belajar!

0 Comments:
Post a Comment
<< Home