about perl script

47
www.geocities.com/raja_pangalengge/PEd 1 Tuntunan PERL script Ir. Naek, MT. Kepala Laboratorium Pemrograman Jaringan Divisi Pelatihan & Pengembangan Bandung – 2007 Reference: www.itknowledge.com/tpj www.jmarshall.com/easy/cgi/ www.perl.com/CSPAN/scripts/index.html Ir. SNMP Simamora, MT., “Pengantar Bahasa Pemrograman dalam Pendekatan Praktis (Ulasan dalam Bahasa C++, Bahasa BASIC, dan JavaScript)”, Pangalengge Educations, 2006. PERL, Practical Extraction and Report Language, adalah bahasa pemrograman berbasis web (script) yang diterjemahkan di sisi server (server based), setiap kali akan dijalankan; sehingga PERL script tergolong kepada bahasa pemrograman yang diterjemahkan oleh interpreter seperti halnya: BASIC, JavaScript, PROLOG, VBScript, ASP, PHP. Namun, berbeda dengan script seperti PHP, ASP, dan JavaScript, PERL dapat dijalankan juga tanpa tergantung kepada web-browser (platform HTML), karena PERL menggunakan metode CGI (Common Gateway Interface) agar dapat berinteraksi dengan web-server dan disamping juga PERL merupakan bahasa pemrograman standar yang digunakan pada lingkungan sistem operasi UNIX. Jadi bisa disimpulkan bahwa PERL identik dengan BASIC pada lingkungan sistem operai DOS. Seperti ditunjukkan pada tampilan berikut ini: Setelah menentukan jalinan letak interpreter PERL pada direktori disk, tuliskan jalinan jalur sinkronisasi penerjemahan pada lingkungan command DOS sebagai berikut: C:\set path=c:\Program Files\sambar41\perl

Upload: s-n-m-p-simamora

Post on 31-May-2015

1.654 views

Category:

Technology


3 download

DESCRIPTION

How to code the web-script the PERL, and I think it's a simple script.. :)

TRANSCRIPT

Page 1: About PERL script

www.geocities.com/raja_pangalengge/PEd

1

Tuntunan PERL script

Ir. Naek, MT. Kepala Laboratorium Pemrograman Jaringan

Divisi Pelatihan & Pengembangan Bandung – 2007

Reference: www.itknowledge.com/tpj www.jmarshall.com/easy/cgi/ www.perl.com/CSPAN/scripts/index.html Ir. SNMP Simamora, MT., “Pengantar Bahasa Pemrograman dalam Pendekatan Praktis

(Ulasan dalam Bahasa C++, Bahasa BASIC, dan JavaScript)”, Pangalengge Educations, 2006.

PERL, Practical Extraction and Report Language, adalah bahasa pemrograman berbasis web (script) yang diterjemahkan di sisi server (server based), setiap kali akan dijalankan; sehingga PERL script tergolong kepada bahasa pemrograman yang diterjemahkan oleh interpreter seperti halnya: BASIC, JavaScript, PROLOG, VBScript, ASP, PHP. Namun, berbeda dengan script seperti PHP, ASP, dan JavaScript, PERL dapat dijalankan juga tanpa tergantung kepada web-browser (platform HTML), karena PERL menggunakan metode CGI (Common Gateway Interface) agar dapat berinteraksi dengan web-server dan disamping juga PERL merupakan bahasa pemrograman standar yang digunakan pada lingkungan sistem operasi UNIX. Jadi bisa disimpulkan bahwa PERL identik dengan BASIC pada lingkungan sistem operai DOS. Seperti ditunjukkan pada tampilan berikut ini: Setelah menentukan jalinan letak interpreter PERL pada direktori disk, tuliskan jalinan jalur sinkronisasi penerjemahan pada lingkungan command DOS sebagai berikut: C:\set path=c:\Program Files\sambar41\perl

Page 2: About PERL script

www.geocities.com/raja_pangalengge/PEd

2

Pada kesempatan kali ini, interpreter yang digunakan adalah PERL 5 dengan menggunakan Sambar Server v4.1, seperti terlihat berikut ini: Tampilan default welcome page server ini adalah sebagai berikut:

Page 3: About PERL script

www.geocities.com/raja_pangalengge/PEd

3

Script pertama Anda! Misalkan akan ditampilkan sebuah string:” Selamat Datang di kota Dolok Sanggul.” ke layar komputer. hallo.pl print "Selamat Datang di kota Dolok Sanggul."; Dijalankan menggunakan lingkungan interpreter konvensional (platform DOS, dengan metode command-line), yakni sebagai berikut Dijalankan menggunakan platform Sambar Server v4.1, sebagai berikut: Latihan berikutnya, mengadopsi dari contoh sebelumnya, akan ditambahkan satu baris setelah kalimat pertama:”Pesan dari Pangalengge Educations.”. hallo1.pl print "Selamat Datang di kota Dolok Sanggul.\n"; print "Pesan dari Pangalengge Educations."; Harus diperhatikan bahwa perintah ‘\n’ (ganti baris baru) diletakkan di akhir baris script; berbeda pada Bahasa Pemrograman C/C++, yang dapat diletakkan di awal baris sintaks.

Page 4: About PERL script

www.geocities.com/raja_pangalengge/PEd

4

Namun, perintah ‘\n’ tidak dapat diterjemahkan oleh interpreter Sambar Server v4.1, sehingga digantikan dengan tags ‘<br>’. Berikutnya sebuah perhitungan arithmatika disajikan sebagai berikut: hasil (a * (c – b)) MOD c; dimana, nilai masing-masing variabel diisikan sebagai berikut: a 5 ; b -3 ; c 2 Sintaksnya sebagai berikut: ngitung.pl $a=5; $b=-3; $c=2; $hasil=($a*($c-$b))%$c; print "Hasil = ", $hasil; Hasil perhitungan ini sama dengan 1, diperoleh dari: hasil (5 * (2 – -3)) MOD 2; hasil (5 * 5) MOD 2; hasil 25 MOD 2; hasil 1; Hitunglah aljabar berikut ini:

M = ( )

5edcba ÷+++

dimana: a = -8 b = -2 c = 12 d = 6 e = 2 Aljabar ini dalam PERL script dituliskan: M = (a+b+c+d÷e)/5; Dan M=1.

Page 5: About PERL script

www.geocities.com/raja_pangalengge/PEd

5

aljabar.pl $a=-8; $b=-2; $c=12; $d=6; $e=2; $m=($a+$b+$c+$d/$e) / 5; print "Hasil = ", $m; Lalu bagaimana bila masukan suatu nilai diinginkan dari user, bukan langsung terdeklarasikan pada badan program? Persoalan ini dapat diselesaikan menggunakan bantuan tags HTML, sebagai berikut: bukutamu.htm <HTML> <HEAD><TITLE>.:Catatan Kunjungan:.</TITLE></HEAD> <BODY bgcolor=white text=black link=black vlink=black alink=black> <CENTER> <FONT SIZE=5 COLOR=#996633><B>Silahkan isi Buku Tmu:</B></FONT> </CENTER> <BR> <BR> <FORM METHOD=POST ACTION="/cgi-bin/bukutamu.pl"> <TABLE border=0 cellpadding=5> <TR> <TD>Nama (<I>diisi</I>)</TD> <TD><INPUT TYPE=text NAME=name size=40></TD></TR> <TR> <TD>e-mail</TD> <TD><INPUT TYPE=text NAME=email size=40></TD></TR> <TR><TD>Pesan (<I>diisi</I>)</TD> <TD><TEXTAREA NAME=msg COLS=60 ROWS=4></TEXTAREA></TD> </TR> <TR> <TD></TD> <TD><INPUT TYPE=submit VALUE="Oke"></TD> </TR> </TABLE> </FORM> </BODY> </HTML> bukutamu.pl read(STDIN, $data, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $data); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # Convert the HTML encoding $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/<!--(.|\n)*-->//g;

Page 6: About PERL script

www.geocities.com/raja_pangalengge/PEd

6

# Convert HTML stuff as necessary. $value =~ s/<([^>]|\n)*>//g; $FORM{$name} = $value; } &missing_name unless $FORM{'name'}; &missing_msg unless $FORM{'msg'}; open (FILE, "$bookfile") || die "Can't open $bookfile: $!\n"; @LINES=<FILE>; close(FILE); $SIZE=@LINES; open (FILE, ">$bookfile") || die "Can't open $bookfile: $!\n"; for ($i = 0; $i <= $SIZE; $i++) { $_=$LINES[$i]; if (/<!--top-->/) { print FILE "<!--top-->\n"; print FILE "<b>$FORM{'msg'}</b><br>\n"; print FILE "$FORM{'name'}"; if ($FORM{'email'}) { print FILE " \&lt;<A HREF=\"mailto:$FORM{'email'}\">"; print FILE "$FORM{'email'}</A>\&gt;"; } print FILE "<HR>\n"; } else { print FILE $_; } } close (FILE); print "<HTML><HEAD><TITLE>.:Selesai:.</TITLE></HEAD><BODY bgcolor=white>\n"; print "<FONT SIZE=5 COLOR=#996633><B>Terima kasih Atas Kunjungannya</B></FONT>\n"; print "<BR><BR>Data Anda berikut telah terseimpan di Buku Tamu kami::<HR>\n"; print "<b>$FORM{'msg'}</b><br>\n"; print "$FORM{'name'}"; if ($FORM{'email'}) { print " &lt;<A HREF=\"mailto:$FORM{'email'}\">"; print "$FORM{'email'}</A>&gt;"; } print "<P><HR>\n"; print "<A HREF=\"/latihan/bukutamu.htm\">Isian Buku Tamu.</A>\n"; print "</BODY></HTML>\n";

Page 7: About PERL script

www.geocities.com/raja_pangalengge/PEd

7

exit; sub missing_name { print "<HTML><HEAD><TITLE>Missing Name</TITLE></HEAD><BODY>\n"; print "<FONT SIZE=5 COLOR=#996633><B>Name field is blank...</B></FONT>\n"; print "<BR><BR>Please repost the name section of the guestbook.<P>\n"; print "Return to the <a href=\"/samples/book.htm\">Guest Book</a>.\n"; print "</BODY></HTML>\n"; exit; } sub missing_msg { print "<HTML><HEAD><TITLE>Missing Comments</TITLE></HEAD>\n"; print "<FONT SIZE=5 COLOR=#996633><B>Comment field is blank...</B></FONT>\n"; print "<BR><BR>Please repost the comment section of the guestbook.<P>\n"; print "Return to the <a href=\"/samples/book.htm\">Guest Book</a>.\n"; print "</BODY></HTML>\n"; exit; } Untuk menjalankannya digunakan interpreter Sambar Server v4.1 dengan metode CGI, seperti ditunjukkan pada tampilan berikut ini:

Page 8: About PERL script

www.geocities.com/raja_pangalengge/PEd

8

Komentar Komentar dalam suatu bahasa pemrograman digunakan untuk menjelaskan maksud deklarasi suatu baris program (yang disebut dengan statement). Contoh: komentar.pl #Baris ini tidak dieksekusi oleh interpreter print "Baris ini dieksekusi oleh interpreter"; konstanta1.pl $a=35; #a diisikan 5 $a/=5; #hasil pembagian a thd. 5 diisikan ke a print $a; #tampilkan isi a yang baru Artinya, dalam menuliskan komentar pada badan program, setiap bahasa pemrograman, termasuk PERL menggunakan karakter khusus ‘#’ untuk mengawali statement komentar, seperti juga pada bahasa pemrograman/script yang lain seperti: C/C++ menggunakan karakter ‘//’ dan ‘/*’ untuk mengawali dan ‘*/’ untuk

mengakhiri. JAVA dan JavaScript menggunakan karakter ‘//’ di awal komentar BASIC menggunakan karakter ’ di awal komentar

Disamping itu, karakter komentar ini juga biasa digunakan oleh pemrogram untuk memeriksa suatu statement program jika ditemukan bugs (kesalahan) saat script/sintaks diterjemahkan oleh translator. Deklarasi suatu variabel terlebih dahulu dituliskan lalu diikuti/dilanjutkan dengan penulisan statement penugasan. Misalkan script berikut akan memberikan nilai Z=0: hindari.pl

Page 9: About PERL script

www.geocities.com/raja_pangalengge/PEd

9

$Z=$a+$b; $a=-9; $b=7; print $a ," + ", $b ," = ", $Z; Operator

Operator digunakan untuk mengerjakan isi operand berdasar jenis instruksi yang ditentukan pada badan program. Misalkan:

baz +← maka, a dan b disebut dengan operand, dikerjakan menggunakan operator ‘+” dimana hasil pengerjaannya dimasukkan ke z oleh operator assignment ‘=’ (dalam pseudocode, ‘=’ dituliskan ‘←’) maka z disebut hasil operasi. Operator yang dikenal script PERL antara lain: Operator Arithmatika

• Penjumlahan Misalkan: Z ← a + b; jumlah.pl $a=-9; $b=7; $Z=$a+$b; print $a ," + ", $b ," = ", $Z;

• Pengurangan Misalkan: Z ← a – b; kurangkan.pl $a=-9; $b=7; $Z=$a-$b; print $a ," - ", $b ," = ", $Z;

• Perkalian Misalkan: Z ← a x b; kali.pl $a=-9; $b=7; $Z=$a*$b; print $a ," x ", $b ," = ", $Z;

• Pembagian Misalkan: Z ← a ÷ b; bagikan.pl $a=-63; $b=7; $Z=$a/$b; print $a ," / ", $b ," = ", $Z;

Page 10: About PERL script

www.geocities.com/raja_pangalengge/PEd

10

• Pembagian Bersisa (Modulus) Misalkan: Z ← a mod b; Jika a=-69, dan b=7, maka Z=-6; namun karena keterbatasan interpreter PERL, hasilnya = 1. Untuk itu, pada script digunakan penanganan khusus pengerjaan operator modulus untuk operand yang dibagi bernilai negatip. bagisisa.pl $a=-69; $b=7; $Z=(($a*-1)%$b)/-1; print $a ," % ", $b ," = ", $Z; Bedakan dengan script berikut: bagisisa1.pl $a=69; $b=7; $Z=$a%$b; print $a ," % ", $b ," = ", $Z;

• Trigonometri: Sine Ingat! 3600 = 2π radian 10 = (2π ÷ 3600) radian = (1 ÷ 57.2958) radian Sin 300 = 0.5 Sin 900 = 1 sine.pl $sin30=sin(30/57.2958); $sin90=sin(90/57.2958); print "Sin 30 = ", $sin30 ,"\n"; print "Sin 90 = ", $sin90;

• Trigonometri: Cosine Analog dengan kasus sine sebelumnya: Cos 300 = 0.866025 Cos 900 = 0 cosine.pl $cos30=cos(30/57.2958); $cos90=cos(90/57.2958); print "Cos 30 = ", $cos30 ,"\n"; print "Cos 90 = ", $cos90;

• Trigonometri: Tangent Analog dengan kasus sine sebelumnya: Tan 300 = 0.577349 Tan 450 = 1 tangent.pl $a=(30/57.2958); $sinus30=sin($a); $cosinus30=cos($a); $b=(45/57.2958); $sinus45=sin($b);

Page 11: About PERL script

www.geocities.com/raja_pangalengge/PEd

11

$cosinus45=cos($b); $tgt30=($sinus30)/($cosinus30); $tgt45=($sinus45)/($cosinus45); print "Tan 30 = ", $tgt30 ,"\n"; print "Tan 45 = ", $tgt45;

• Bilangan Acak acakkan.pl $acak=rand(); print "Bilangan yang muncul: ", $acak;

• Nilai Absolut Misalkan: a = -0.45, maka nilai absolut(a) = 0.45 absolut.pl $a=-0.45; $Z=abs($a); print "Nilai absolut ", $a ," = ", $Z;

• Operator Logika, digunakan untuk menyatakan gerbang logika AND dan OR: AND, disimbolkan dengan ‘&&’, menyatakan bahwa keluaran bernilai 1 (TRUE)

jika dan hanya jika kedua masukan bernilai 1 (TRUE). lAnd.pl $ini='r'; $itu='R'; $bil=7; if($bil<7 && $ini=='s') { print "Isi variabel ini adalah karakter s"; } if(($bil>=7 && $itu=='R')||$ini=='s') { print "Isi variabel bil adalah 7"; } OR, disimbolkan dengan ‘||’, menyatakan bahwa keluaran bernilai 1 (TRUE)

jika dan hanya jika salah satu masukan bernilai 1 (TRUE). lOr.pl $ini="A"; $itu="a"; $bil=7; if(($bil<=7 && $itu=="a")||$ini=="a") { print "Isi variabel itu adalah karakter a"; } if($bil>7 || $itu=="A") { print "\nIsi variabel bil adalah 7"; } Karena ‘\n’ tidak dapat diterjemahkan oleh Sambar Server v4.1, maka diganti dengan tags ‘<br>’.

• Operator ‘==’ ≠ ‘=’ Operator ‘==’ (disebut operator equality) digunakan untuk pembanding isi antara dua variabel pada logika AND dan OR.

Page 12: About PERL script

www.geocities.com/raja_pangalengge/PEd

12

Misalkan: Akan ditampilkan pesan “Apakabar?” jika a dan b masing-masing diisi nilai 23 dan 32, selain nilai itu akan ditampilkan pesan “Mau ke mana?”. opequal.pl $a=32; $b=23; if($a==23&&$b==32) { print "Apakabar?"; } else { print "Mau ke mana?"; } Sedangkan operator ‘=’ (disebut operator assignment) digunakan sebagai penugas untuk memindahkan hasil suatu pengerjaan operasi arithmatika ke sebuah operator lain. Misalkan: a=23 ; b=32 jika hasil a+b disimpankan ke c, maka didapatkan c=55 opassign.pl $a=32; $b=23; $c=$a+$b; print "Isi c = ", $c;

• Operator Akar Pangkat 2 Misalkan: 4 = 2 akarpkt.pl $a=4; $hasil=sqrt($a); print "Akar ", $a ," = ", $hasil;

• Bilangan Natural (e = ) Misalkan mencari nilai eksponensial suatu bilangan: e2 = 7.39 eksponensial.pl $bil=2; print "Nilai e pangkat ", $bil ," = ", exp($bil); e = 2.7183 ekspo.pl $bil=exp(1); print "Bilangan e = ", $bil;

• Logaritma Natural (Log-N) Misalkan : log(s), artinya → mendapatkan nilai logaritma natural dari s (bilangan dasar e). log(2.718282) = 1.0 log(7.389056) = 2.0 logN.pl $bil=2.718282; $hasil=log($bil); print "Log-Natural(", $bil ,") = ", $hasil;

• Logaritma 10 (menggunakan bilangan dasar 10)

Page 13: About PERL script

www.geocities.com/raja_pangalengge/PEd

13

Keterbatasan PERL, dibandingkan dengan JavaScript dan C/C++ dalam operasi logaritma, adalah tidak disediakannya fungsi log10() untuk menghitung nilai logaritma dalam bilangan dasar 10; dimana yang disediakan adalah fungsi log() yang digunakan untuk menghitung nilai logaritma alam/logaritma natural (ln) dengan bilangan dasar e. Sehingga untuk menghitung nilai logaritma bilangan dasar 10, dalam JavaScript dan C/C++ dituliskan log10(), digunakan rumus:

)10ln()ln()log( xx =

Dalam bidang Teori Matematika Dasar nilai kedua fungsi logaritma ini dicari menggunakan sebuah tabel. Bila x adalah sebuah bilangan bulat (integer), carilah nilai log-nya dan ln-nya untuk x=1000. Ingat!

bab cca =⇔log log10.pl $bil=1000; $hasil=(log($bil))/(log(10)); print "ln(", $bil ,") = ", log($bil) ,"\n"; print "Log(", $bil ,") = ", $hasil;

• eX-clusive-OR (disimbolkan ‘⊕’), dalam script PERL dituliskan ‘^’ Aloritma Gerbang Logika XOR menyebutkan: keluaran bernilai 1, jika dan hanya jika jumlah bit masukan kelipatan ganjil; sebaliknya bernilai 0 jika bit masukan kelipatan genap. Simbol dalam rangkaian logika: Misalkan: DEC2 ⊕ DEC3 = DEC1 Karena interpreter PERL dijalankan dalam platform 16-bit (DOS), maka 1byte=16bit, sehingga: DEC2 = 0000 0000 0000 0010 DEC3 = 0000 0000 0000 0011 Maka: 0000 0000 0000 0010 0000 0000 0000 0011 ⊕ 0000 0000 0000 0001 ⇒ DEC1 exor.pl $a=2; $b=3; $hasil=($a)^($b); print "Hasil = ", $hasil;

A B A + B0 00 11 01 1

0110

Tabel KebenaranLogika X-OR

Page 14: About PERL script

www.geocities.com/raja_pangalengge/PEd

14

Operator Unary Yang dimaksud dengan operator unary adalah operator yang hanya menggunakan sebuah operand saja. Misalkan: 2 + 1 adalah dua operand yang nilainya bernilai sama dengan 3; dalam operator unary, dapat dinyatakan menjadi: 2++. Operator unary biasanya digunakan untuk pengerjaan pencacahan (menambah/mengurangkan suatu bilangan dengan nilai 1). Pre-increment: tambahkan isi $a dengan 1, hasilnya masukkan ke $a preincre.pl $a=3; $hasil=++$a; print "Nilai: ", $hasil; Hasil = 4.

Post-increment: masukkan isi $b, lalu tambahkan 1 ke isi $b postincre.php $b=3; $hasil=$b++; print "Nilai: ", $hasil; Hasil = 3.

Pre-decrement: kurangkan isi $c dengan 1, hasilnya masukkan ke $c predecre.php $c=3; $hasil=--$c; print "Nilai: ", $hasil; Hasil = 2.

Post-decrement: masukkan isi $d, lalu kurangkan isi $b dengan 1 postdecre.php $d=3; $hasil=$d--; print "Nilai: ", $hasil; Hasil = 3.

Eksklusifitas script PERL terletak dalam penanganan string jika dioperasikan

menggunakan arithmatika maupun logika. Misalkan: $a, dan $b masing-masing tipe data string yang diisikan dengan nilai: 17 dan 2; maka: Jika ditetapkan statement berikut: $hasil1=$b+$a; + = dijumlahkan $hasil2=$a+$b; + = di-OR-kan maka didapatkan: Isi variabel hasil1 = 19, dan Isi variabel hasil2 = 19 DEC17 = 0000 0000 0001 0001 DEC 2 = 0000 0000 0000 0010 + DEC19 = 0000 0000 0001 0011 concate.pl $a="17"; $b="2"; $hasil1=$b+$a; $hasil2=$a|$b; print "Isi variabel hasil1 = ", $hasil1; print "\nIsi variabel hasil2 = ", $hasil2;

Page 15: About PERL script

www.geocities.com/raja_pangalengge/PEd

15

Operator Penugasan (assignment operator), digunakan untuk

mengalihkan/memindahkan hasil operasi arithmatika atau logika ke sebuah variabel. Misalkan: $a=6; $b=4; jika: $a+=b; maka $a=10 assignment1.pl $a=6; $b=4; $a+=$b; print "Isi variabel a = ", $a; jika: $a-=b; maka $a=2 assignment2.pl $a=6; $b=4; $a-=$b; print "Isi variabel a = ", $a; jika: $a*=b; maka $a=24 assignment3.pl $a=6; $b=4; $a*=$b; print "Isi variabel a = ", $a; jika: $a/=b; maka $a=1.5 assignment4.pl $a=6; $b=4; $a/=$b; print "Isi variabel a = ", $a; jika: $a*=b; maka $a=2 assignment5.pl $a=6; $b=4;

Page 16: About PERL script

www.geocities.com/raja_pangalengge/PEd

16

$a%=$b; print "Isi variabel a = ", $a; jika: $a&=b; maka $a=4 assignment6.pl $a=6; $b=4; $a&=$b; print "Isi variabel a = ", $a; jika: $a*=b; maka $a=6 assignment7.pl $a=6; $b=4; $a|=$b; print "Isi variabel a = ", $a; jika: $a⊕=b; maka $a=2 assignment8.pl $a=6; $b=4; $a^=$b; print "Isi variabel a = ", $a; Mekanisme untuk membuka dan menampilkan isi sebuah file teks

Misalkan, dibuat sebuah file teks dengan nama: oke.txt dan isi-nya dituliskan sebagai berikut: oke.txt #!/usr/bin/perl # Testdatei cgi-test.pl use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); print header(), start_html("Hello CGI"), p("Hello CGI"), end_html(); Lalu disimpankan ke folder contoh, dengan struktur direktori source code script berada dalam direktori yang sama dengan folder contoh, maka cara untuk menampilkan isi oke.txt dituliskan dalam script sebagai berikut: bukafile1.pl $berkas="contoh/oke.txt"; open (berkas) || die "Tidak dapat membuka file\n";

Page 17: About PERL script

www.geocities.com/raja_pangalengge/PEd

17

print <berkas>; close (berkas); Tampilan jalannya script: Konversi Bilangan Desimal ke Basis Bilangan Lain

• DEC ke HEX Misalkan: 3510 = (...)16 Algoritma-nya: 35 ÷ 16 = 2 sisa 3 2 ÷ 16 = 0 sisa 2 Dituliskan: 23h atau 2316 Jika dibalikkan, 23h = DEC…?, maka: 23h = (2x161)+(3x160) = 32+3 = 3510 Bilangan Heksadesimal dituliskan dengan prefix:’0x’. Tabel Konversi DEC-HEX (0 s.d 17):

DEC HEX 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 A 11 B 12 C 13 D

Akhir baris dari isi file oke.txt diberikan ‘new-line’ (ditekan

ENTER)

Page 18: About PERL script

www.geocities.com/raja_pangalengge/PEd

18

14 E 15 F 16 10 17 11

hex2dec.pl $a=23; print "0x", $a ," dalam desimal = ", hex($a);

• DEC ke OCT Misalkan: 3510 = (...)8 Algoritma-nya: 35 ÷ 8 = 4 sisa 3 4 ÷ 8 = 0 sisa 4 Dituliskan: 0438 atau 438 Jika dibalikkan, 438 = DEC…?, maka: 438 = (4x8

1)+(3x80) = 32+3 = 3510 Bilangan Oktal dituliskan dengan prefix:’0’. Tabel Konversi DEC-OCT (0 s.d 17):

DEC HEX 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 10 9 11 10 12 11 13 12 14 13 15 14 16 15 17 16 20 17 21

oct2dec.pl $b=43; print "0", $b ," dalam desimal = ", oct($b);

Komputer senantiasa menampilkan dalam bilangan

Desimal

Page 19: About PERL script

www.geocities.com/raja_pangalengge/PEd

19

Mekanisme konversi suatu karakter ke bilangan Sintaks-nya:

ord($kara); kar2num.pl $a1='A'; $a2='a'; print "Karakter ", $a1 ," dikodekan DEC", ord($a1); print "\nKarakter ", $a2 ," dikodekan DEC", ord($a2); Mekanisme konversi suatu bilangan ke karakter

Sintaks-nya: chr($bil);

num2char.pl $a1=65; $a2=95; print "DEC ", $a1 ," direpresentasikankan menjadi karakter ", chr($a1); print "\nDEC ", $a2 ," direpresentasikankan menjadi karakter ", chr($a2); Contoh: Menampilkan Tabel ASCII 8-bit dari DEC65 s.d DEC75. ascii6575.pl print "Tabel ASCII\n"; print "==============\n"; for($i=65;$i<=75;$i++) { print $i ,"\t", chr($i) ,"\n"; } #’\t’ artinya tabulasi (tab) Tampilan jalannya script ascii6575.pl: Mekanisme menerima input dari user

Dalam script PERL dilakukan dengan dua mekanisme, yaitu ‘<STDIN>’ atau cukup dengan ‘<>’, dan fungsi chomp(). Misalkan terlihat pada contoh berikut: - User diajukan sebuah pertanyaan tentan berapa umurnya sekarang dan

sekolah dimana.

Page 20: About PERL script

www.geocities.com/raja_pangalengge/PEd

20

tanya.pl print "Berapa umur Anda?: "; $umur = <>; print "WOW! Umur Anda ternyata ", $umur ," tahun!"; print "\nSekarang sekolah di mana?: "; $sekolah=<stdin>; print "Anda sekolah di ", $sekolah ," ya...."; Hasil jalannya script tanya.pl: Terlihat, saat user-input akan ditampilkan memberi keadaan baris baru terhadap kata yang mengikutinya selanjutnya (ada ‘ENTER’). Untuk meniadakan keadaan ini, digunakan fungsi chomp() seperti berikut ini: tanya1.pl print "Berapa umur Anda?: "; chomp($umur=<>); print "WOW! Umur Anda ternyata ", $umur ," tahun!"; print "\nSekarang sekolah di mana?: "; chomp($sekolah=<stdin>); print "Anda sekolah di ", $sekolah ," ya...."; Tampilan jalannya script tanya1.pl:

Page 21: About PERL script

www.geocities.com/raja_pangalengge/PEd

21

Contoh: Analog dengan script ascii6575.pl, namun batas bawah=65, dan batas atas=75 didapatkan dari user-input: asciit.pl print "Kode dimulai dari?: "; $bawah=<>; print "Kode diakhiri pada?: "; $atas=<>; print "\n"; print "Tabel ASCII\n"; print "==============\n"; for($i=$bawah;$i<=$atas;$i++) { print $i ,"\t", chr($i) ,"\n"; } Hasil jalannya script asciit.pl sebagai berikut: Dari contoh ini bisa disimpulkan bahwa <STDIN> digunakan jika user-input tidak perlu ditampilkan ke layar komputer; sedangkan jika harus ditampilkan digunakan fungsi chomp(). Contoh: - Meminta user-input nilai jari-jari sebuah lingkaran, lalu selanjutnya akan dihitung berapa diamater, keliling, dan luas lingkaran. lingkaran.pl print "Tentukan jari-jari lingkaran?(cm): "; chomp ($r = <>); $diameter = (2 * $r); $luas = (3.14 * ($r ** 2)); $K = ($diameter * 3.14); print "Jika sebuah lingkaran dengan jari-jari = ", $r ,"cm maka:\n"; print "Diameter = ", $diameter ,"cm\n"; print "Keliling = ", $K ,"cm\n"; print "Luas = ", $luas ,"cm^2";

Page 22: About PERL script

www.geocities.com/raja_pangalengge/PEd

22

Struktur Kendali Dengan adanya control structure memungkinkan pemrogram menspesifikasikan logika pemrograman (programs) maupun kontrol aliran jalannya penerjemahan script yang dikehendaki. Dengan demikian, script yang dijalankan interpreter akan menerapkan segala urutan kondisi logika dimana jika memberi hasil true akan menjalankan step script selanjutnya; di lain hal akan menolak mengerjakannya. Ini bertujuan agar translator dapat memahami maksud dan tujuan dari pemrogram dalam aplikasi yang dibangun. Klasifikasi struktur kendali umumnya terbagi atas: If-then else statement

Bentuk Umum: if( kondisi ini bernilai true ) { kerjakan statement ini; } else { kerjakan statement ini; } Contoh: ifthenelse.pl $a=4; if($a<=5) { print "Isi variabel a di bawah nilai 5."; } else { print "Isi variabel a di atas nilai 5."; } Contoh: ifthenelse1.pl print "Masukkan bilangan 0 s.d 9: "; $a=<>; if($a<0||$a>9) { print "Maaf, di luar range!"; } else { print "Anda telah benar memasukkan bilangannya.\n"; print "Terima kasih, dan semoga permohonan Anda selama ini terkabulkan..."; } Tampilan jalannya script ifthenelse1.pl:

Page 23: About PERL script

www.geocities.com/raja_pangalengge/PEd

23

Do..while statement Bentuk Umum: Do { kerjakan statement ini; } while( kondisi ini bernilai true ) Contoh: dowhile.pl $a=5; do { $a-=1; print $a ,"\n"; } while ($a>0); While statement

Bentuk Umum: while( kondisi ini bernilai true ) { kerjakan statement ini; } Contoh: while.pl $a=5; while ($a>0) { $a-=1; print $a ,"\n"; } For … i statement

Bentuk Umum: for( kondisi ini bernilai true ) { kerjakan statement ini; } Contoh: fori.pl for($a=5;$a>0;--$a) { print $a ,"\n"; } Contoh: - dengan menggunakan statement kendali for..i, buatlah tampilan seperti berikut ini: i=0; j=0 i=0; j=1 i=0; j=2 i=1; j=0 i=1; j=1 i=2; j=0 i=2; j=2

Page 24: About PERL script

www.geocities.com/raja_pangalengge/PEd

24

fori00.pl for($i=0;$i<3;$i++) { for($j=0;$j<3;$j++) { if($i+$j!=3) { print "i=", $i ,"; j=", $j ,"\n"; } } } Tidak seperti pada bahasa pemrograman lain, switch statement tidak dikenal

dalam script PERL, namun serangkaian statement logika lain dapat dikombinasikan dalam urutan sebuah blok program. Seperti misalkan statement logika if dalam blok statement logika while. Bentuk Umum: while( kondisi ini bernilai true ) { kerjakan statement ini; if( kondisi ini bernilai true ) { kerjakan statement ini; } } Contoh: kombinasi.pl $a=7; while($a>0){ $hasil=$a--; print $hasil ,"\n"; } if($a=1) { print "Selesai...\n"; }

Blok-blok struktur kendali program dapat dideskripsikan dalam suatu algoritma pemrograman dengan dua cara, yakni melalui pseudocode, dan blok program.flow-chart. Berikut adalah simbol flow-chart berdasar American National Standard Institute (ANSI)

Page 25: About PERL script

www.geocities.com/raja_pangalengge/PEd

25

Gambar Klasifikasi Utama Struktur Kontrol Program pada Bahasa Pemrograman Contoh: User harus memasukkan nilai=1 agar keluar dari proses looping (berulang). cobat.pl print "Jangan masukkan nilai selain bilangan 1: "; $bil=<>; if($bil!=1) { do { print "Ketikkan password: "; $bil=<>; } while($bil!=1); print "Terima kasih, ya..."; } else { print "Terima kasih, semoga permohonan Anda selama ini terkabulkan..."; } Kasus Menghitung Nilai Faktorial Bilangan

Misalkan: Hitung 5! maka, 5! = 5x4x3x2x1 = 120 Harus diperhatikan, bahwa 0! = 1! = 1 Bisa dituliskan script PERL-nya sebagai berikut: faktorial.pl

Page 26: About PERL script

www.geocities.com/raja_pangalengge/PEd

26

$a=5; $hasil=1; if($a==0||$a==1) { print $a ,"! = ", $hasil; } else { for($i=$a;$i>1;$i--) { $hasil*=$i; } print $a ,"! = ", $hasil; } Bila menggunakan metode user-input, bisa dituliskan sebagai berikut: 5faktorial.pl print "Mencari nilai faktorial bilangan (2 s.d 9)\n"; print "Ketikkan bilangan?: "; chomp($a=<>); if($a<0||$a>9) { print "Maaf, di luar range..."; } else { $hasil=1; if($a==0||$a==1) { print $a ,"! = ", $hasil; } else { for($i=$a;$i>1;$i--) { $hasil*=$i; } print $a ,"! = ", $hasil; } } Karena translator yang digunakan tergolong interpeter, maka range bilangan dibatasi maksimal sampai dengan 9; kelemahan interpeter pada pengerjaan bilangan dengan hasil rentang bilangan yang lebar, dihindari terjadinya over-flow. Cara pengerjaan yang lain, bisa juga menggunakan Algoritma Mangabing sebagai berikut: 5! tak lain bisa disebutkan: pengerjaan ke-1: 5-0 x … pengerjaan ke-2: 5-1 x … pengerjaan ke-3: 5-2 x … pengerjaan ke-4: 5-3 x … pengerjaan ke-5: 5-4 x … ⇒ kesimpulan: ada 5 kali perulangan untuk mengerjakan perhitungan 5! Script PERL-nya bisa dituliskan sebagai berikut: faktorial1.pl $a=5; $hasil=1; if($a==0||$a==1) { print $a ,"! = ", $hasil; } else { for($i=0;$i<$a;$i++) { $hasil*=($a-$i); } print $a ,"! = ", $hasil; }

Page 27: About PERL script

www.geocities.com/raja_pangalengge/PEd

27

Bila menggunakan metode user-input dengan menggunakan Algoritma Mangabing: 5faktorial1.pl print "Mencari nilai faktorial bilangan (2 s.d 9)\n"; print "Ketikkan bilangan?: "; chomp($a=<>); if($a<0||$a>9) { print "Maaf, di luar range..."; } else { $hasil=1; if($a==0||$a==1) { print $a ,"! = ", $hasil; } else { for($i=0;$i<$a;$i++) { $hasil*=($a-$i); } print $a ,"! = ", $hasil; } } Logical Value

Nilai logika atau bisa juga disebut boolean dinyatakan true atau false. Bila sebuah ekspresi memberi nilai kebenaran (ya), maka bernilai true, sebaliknya jika sebuah ekspresi memberi nilai kesalahan (tidak), maka bernilai false. Tidak seperti pada Bahasa C/C++, BASIC, JavaScript atau yang lain, script PERL dalam menyatakan Logical Value (Boolean) bisa merepresentasikan dengan nilai true dan false, justru tidak dapat merepresentasikannya dalam nilai 0 atau 1. ttanya.pl print "Masukkan nilai >= 7: "; $tanya = <>; if($tanya<7) { print "Maaf, nilai harus >= 7."; } else { print "Nilai yang Anda isikan benar."; } Ekspresi "Maaf, nilai harus >= 7.", akan bernilai true jika variabel tanya diisikan >= 7, sebaliknya jika variabel tanya diisikan <7, maka ekspresi bernilai false dan menampilkan "Nilai yang Anda isikan benar.". Lebih jelasnya dapat terlihat pada contoh berikut: kas30.pl print "Operand-1 harus lebih besar dari Operand-2\n"; print "Operand-1?: "; $op1=<>; print "Operand-2?: "; $op2=<>; if($op1>$op2) { print "Nilai : true."; } else { print "Nilai : false."; }

Page 28: About PERL script

www.geocities.com/raja_pangalengge/PEd

28

Operasi Larik (Array)

Larik (array) adalah sejumlah data yang bertipe sama, dimana masing-masing elemen diurutkan mulai indeks ke-0. Dalam script PERL, nama variabel sebuah larik dituliskan dengan prefix:’@’. Misalkan: @string=(’b’,’e’,’r’,’t’,’e’,’p’,’u’,’k’); Adalah sebuah larik dengan nama string dengan tipe data char (karakter), berjumlah 8 elemen (umumnya disebut dengan, panjang larik=8), diuraikan sebagai berikut: $string[0]=’b’; $string[1]=’e’; $string[2]=’r’; $string[3]=’t’; $string[4]=’e’; $string[5]=’p’; $string[6]=’u’; $string[7]=’k’; larik01.pl @string=('b','e','r','t','e','p','u','k'); for($i=0;$i<8;$i++) { print "string[", $i ,"]: ", $string[$i]; print "\n"; } larik02.pl $string[0]='b'; $string[1]='e'; $string[2]='r'; $string[3]='t'; $string[4]='e'; $string[5]='p'; $string[6]='u'; $string[7]='k'; for($i=0;$i<8;$i++) { print "string[", $i ,"]: ", $string[$i]; print "\n"; } Elemen larik dapat terdiri dari tipe data karakter/string, dan bilangan (numerik). Misalkan: Tipe Data Karakter: 1kara.pl @huruf=('7','a','c','s','H','A',']'); print "Isi elemen-elemen larik huruf = ", @huruf ,"\n"; print "Elemen dimulai dari indeks ke-0 = ", $huruf[0]; Tipe Data String: 1kata.pl @kata=("7a","satoe","[-5c]","Sabrina","H","Aa"); print "Isi elemen-elemen larik kata = ", @kata ,"\n"; print "Elemen dimulai dari indeks ke-0, isi elemen ke-3 = ", $kata[2];

Page 29: About PERL script

www.geocities.com/raja_pangalengge/PEd

29

Tipe Data Numerik: 1bilangan.pl @bil=(7,56,-5,-11.2,90,0.6); print "Isi elemen-elemen larik bil = ", @bil ,"\n"; print "Elemen dimulai dari indeks ke-0, isi elemen ke-4 = ", $bil[3]; Algoritma Marbulang P7 Diuraikan sebagai berikut:

char[i+7] ; i=0 jika char[0] ← char[7], maka selanjutnya char[i+1]

jika diimplementasikan pada kata berikut ini: Nahumdimana menghasilkan kata baru berikut ini: manaNahumdi Berikut diimplementasikan dengan script PERL: marbulangp7.pl @Kara=('N','a','h','u','m','d','i','m','a','n','a'); $N=@Kara; $j=7; print "Kata yang akan dimanipulasi: "; for($i=0;$i<$N;$i++) { print $Kara[$i] , " "; } print "\n"; print "Dimanipulasi dengan Algoritma Marbulang P7:"; print "\n"; print $Kara[$j]; for($i=0;$i<$N;$i++) { $j=$j+1; if($j>=$N && $j<($N+7)) { print $Kara[$j-$N]; } else { print $Kara[$j]; } } Kasus: Menampilkan setiap karakter yang telah dimasukkan oleh user, namun dengan syarat panjang karakter dibatasi dengan terlebih dahulu ditetapkan oleh user. Misalkan, kata yang dimasukkan: ‘hai’. inputlarik.pl print "Panjang kata yang diinginkan?: "; $N=<>; @kata; for($i<0;$i<$N;$i++) { print "Karakter ke-", $i+1 ,": "; $kata[$i]=<>; } print "\n"; print "Kata yang Anda ketikkan: \n"; for($i=0;$i<$N;$i++) { print $kata[$i];

Page 30: About PERL script

www.geocities.com/raja_pangalengge/PEd

30

} print "Selesai..."; MATRIKS Penggunaan larik banyak dimanfaatkan untuk operasi matriks. Yang dimaksud dengan matriks adalah sejumlah data ber-tipe numerik yang menempati posisi baris dan kolom yang disebut elemen dengan formulasi Amxn; dimana m=baris dan n=kolom. Indeks dimulai dengan 1. Misalkan: sebuah matriks A dengan ukuran 2x3 berisi elemen masing-masing: A[1][1] = -2 A[1][2] = 2 A[1][3] = 1 A[2][1] = 3 A[2][2] = -1 A[2][3] = 5 Selengkapnya matriks A dituliskan sebagai berikut:

−=

513122

32xA

Dalam script PERL dituliskan sebagai berikut: matriks.pl $A[0][0]=-2; $A[0][1]=2; $A[0][2]=1; $A[1][0]=3; $A[1][1]=-1; $A[1][2]=5; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print "A[", $i+1 ,"][", $j+1 ,"]=", $A[$i][$j]; print "\n"; } } Tampilan jalannya script matriks.pl:

Page 31: About PERL script

www.geocities.com/raja_pangalengge/PEd

31

Jika :

−=

513122

32xA x 5 =

−2551551010

Maka hasil matriks yang baru:

−=

2551551010

32xA

Script-nya dituliskan sebagai berikut: matrik.pl $A[0][0]=-2; $A[0][1]=2; $A[0][2]=1; $A[1][0]=3; $A[1][1]=-1; $A[1][2]=5; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print "A[", $i+1 ,"][", $j+1 ,"]=", $A[$i][$j]; print "\n"; } } print "\n"; print "[[A] x 5, hasilnya = \n"; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print "C[", $i+1 ,"][", $j+1 ,"]=", $A[$i][$j]*5; print "\n"; } } print "Dituliskan secara lengkap:\n"; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print "[", $A[$i][$j]*5 ,"]"; } print "\n"; } Tampilan jalannya script matrik.pl:

Page 32: About PERL script

www.geocities.com/raja_pangalengge/PEd

32

Script matrik.pl bisa juga dituliskan kembali sebagai berikut, dimana hasil perkalian matriks A dengan konstanta 5 disimpankan ke matriks C: matrik1a.pl $A[0][0]=-2; $A[0][1]=2; $A[0][2]=1; $A[1][0]=3; $A[1][1]=-1; $A[1][2]=5; @C; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print "A[", $i+1 ,"][", $j+1 ,"]=", $A[$i][$j]; print "\n"; } } print "\n"; print "[C]=[A] x 5, hasilnya = \n"; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { $C=$A[$i][$j]*5; print "C[", $i+1 ,"][", $j+1 ,"]=", $C; print "\n"; } } Kelemahan interpreter dibandingkan dengan compiler adalah terletak pada eksekusi dan storing data serta hasil eksekusi sekaligus dilakukan di RAM (Random Access Memory), sehingga saat program telah selesai dilaksanakan, maka saat itu juga seluruh data hasil eksekusi langsung dihapus dari RAM. Inilah yang menyebabkan pada script matrik1.pl, isi matriks C (perhatikan bagian yang ditunjuk anak panah) bernilai 25, karena hanya merekam nilai hasil eksekusi yang terakhir (A[2][3] x 5). matrik1.pl $A[0][0]=-2; $A[0][1]=2; $A[0][2]=1; $A[1][0]=3; $A[1][1]=-1; $A[1][2]=5; @C; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print "A[", $i+1 ,"][", $j+1 ,"]=", $A[$i][$j]; print "\n"; } } print "\n"; print "[C]=[A] x 5, hasilnya = \n"; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { $C=$A[$i][$j]*5; print "C[", $i+1 ,"][", $j+1 ,"]=", $C; print "\n"; }

Page 33: About PERL script

www.geocities.com/raja_pangalengge/PEd

33

} print "Dituliskan secara lengkap:\n"; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print "[", $C ,"]"; } print "\n"; } Misalkan: A2x3 - B3X2, hasilnya disimpankan ke matriks baru, C, dengan ukuran baru 2x2; disebut matriks kembar.

−=

513122

32xA

−=

133201

32xB

−−−−−−−−−−

=)15())3(1()33())2(1()02()12(

32xC =

−420323

Dituliskan dalam script PERL sebagai berikut: matrikab.pl $A[0][0]=-2; $A[0][1]=2; $A[0][2]=1; $A[1][0]=3; $A[1][1]=-1; $A[1][2]=5; $B[0][0]=1; $B[0][1]=0; $B[0][2]=-2; $B[1][0]=3; $B[1][1]=-3; $B[1][2]=1; print "Matriks A:\n";

Page 34: About PERL script

www.geocities.com/raja_pangalengge/PEd

34

for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print "A[", $i+1 ,"][", $j+1 ,"]=", $A[$i][$j]; print "\n"; } } print "\nMatriks B:\n"; for($j=0;$j<2;$j++) { for($k=0;$k<3;$k++) { print "B[", $j+1 ,"][", $k+1 ,"]=", $B[$j][$k]; print "\n"; } } print "\n"; print "[A] - [B], hasilnya: \n"; for($i=0;$i<2;$i++) { for($k=0;$k<3;$k++) { print "C[", $i+1 ,"][", $k+1 ,"]=", $A[$i][$k]-$B[$i][$k]; print "\n"; } } Tampilan jalannya script matrikab.pl: Mengurutkan elemen larik: Mini-Maks (dari kecil ke besar)

Misalkan sebuah larik data dengan isi elemennya sebagai berikut: data = (98,5,12,-4,0,-22,3,-7); Maka diurutkan dari kecil ke besar sebagai berikut: data = (-22,-7,-4,0,3,5,12,98); Script-nya sebagai berikut: min2mkas.pl @data = (98,5,12,-4,0,-22,3,-7); print "Larik data awal:\n"; for($i=0;$i<8;$i++) { print $data[$i] ," "; } for($i=0;$i<8;$i++) {

Page 35: About PERL script

www.geocities.com/raja_pangalengge/PEd

35

for($j=0;$j<8-$i-1;$j++) { if($data[$j]>$data[$j+1]) { $temp=$data[$j]; $data[$j]=$data[$j+1]; $data[$j+1]=$temp; } } } print "\nSetelah diurutkan dari kecil ke besar:\n"; for($i=0;$i<8;$i++) { print $data[$i] ," "; } Tampilan jalannya script min2maks.pl: Contoh lain: min2max.pl @urut=(900,76,-5,45,-666,3); print "Diurutkan dari terkecil ke terbesar: "; for($i=0;$i<6;$i++) { for($j=0;$j<6-$i-1;$j++) { if($urut[$j]>$urut[$j+1]) { $temp=$urut[$j]; $urut[$j]=$urut[$j+1]; $urut[$j+1]=$temp; } } } for($i=0;$i<6;$i++) { print $urut[$i] ," "; } Contoh: Sejumlah data dengan panjang 7, ber-tipe numerik, dimasukkan oleh user secara acak; selanjutnya akan diurutkan dari terbesar sampai dengan terkecil. Misalkan:

Page 36: About PERL script

www.geocities.com/raja_pangalengge/PEd

36

Numerik=(-11,22,-3,94,25,36,17); Diurutkan menjadi: Numerik=( 94,36,25,22,17,-3,-11); maks2min.pl @Numerik; print "Masukkan data maks. 7, sbb:\n"; for($i=0;$i<7;$i++) { print "Data ke-", $i+1 ,": "; chomp($Numerik[$i]=<>); } print "\n"; print "Data yang Anda masukkan: "; for($i=0;$i<7;$i++) { print $Numerik[$i] ," "; } print "\n"; print "Diurutkan menjadi: "; for($i=0;$i<7;$i++) { for($j=0;$j<7-$i-1;$j++) { if($Numerik[$j]<$Numerik[$j+1]) { $temp=$Numerik[$j]; $Numerik[$j]=$Numerik[$j+1]; $Numerik[$j+1]=$temp; } } } for($i=0;$i<7;$i++) { print $Numerik[$i] ," "; } Blok pada script maks2min.pl ini: ... for($i=0;$i<7;$i++) { print $Numerik[$i] ," "; } dapat digantikan seperti pada script berikut ini: max2min1.pl @urut; print "Pemasukan data sebanyak 7 kali\n"; for($i=0;$i<7;$i++) { print "Data ke-", $i+1 ,": "; chomp($urut[$i]=<>); } print "\n"; print "Diurutkan dari terbesar ke terkecil: "; for($i=0;$i<7;$i++) { for($j=0;$j<7-$i-1;$j++) { if($urut[$j]<$urut[$j+1]) { $temp=$urut[$j]; $urut[$j]=$urut[$j+1]; $urut[$j+1]=$temp; } } } print "@urut";

Page 37: About PERL script

www.geocities.com/raja_pangalengge/PEd

37

Tampilan jalannya script max2min1.pl: Manipulasi String terhadap Larik Mengurutkan karakter pada sebuah string Misalkan ada sebuah string:”Sebentar lagi kedatangan Raja Mangabing akan disambut di kota Chicago” dimana disimpankan ke larik bernama larik. Selanjutnya akan diurutkan setiap kata berdasar urutan kode ASCII 8bit-nya terhadap karakter pertama kata tersebut. Hasilnya setelah diurutkan: Chicago Mangabing Raja Sebentar akan di disambut kedatangan kota lagi sortstr.pl @larik=qw(Sebentar kedatangan Raja Mangabing akan disambut di kota Chicago); @larik = sort(@larik); print "@larik"; Dari hasil jalannya script sortstr.pl, dapat disimpulkan bahwa level huruf besar di bawah dari level huruf kecil (berdasar kode desimal ASCII-nya). Analogi dengan kasus sortstr.pl, namun setiap kata terlebih dahulu diubah ke huruf kecil lalu diurutkan; seperti berikut ini: akan chicago di disambut kedatangan kota mangabing raja sebentar sortstr1.pl @larik=qw(Sebentar kedatangan Raja Mangabing akan disambut di kota Chicago); foreach $ini (@larik) { push(@coba,"\L$ini"); } @coba = sort(@coba); print "@coba"; Mengubah bentuk string ke larik Contoh:

Page 38: About PERL script

www.geocities.com/raja_pangalengge/PEd

38

kalimat="Segera-saksikan-siaran langsung basket di stasiun Sagoeman TV."; str2larik1.pl $kalimat="Segera-saksikan-siaran langsung basket di stasiun Sagoeman TV."; @larik = split('-',$kalimat); print "@larik"; Pada string yang diisikan ke variabel kalimat, yang dihilangkan antar kata agar diubah ke bentuk larik adalah karakter: ‘–’. Contoh: nama="Tessi,Sentot Kho,Jaka Haryatno,Buchori,Zebulon,Renee,Indri"; str2larik.pl $nama="Tessi,Sentot Kho,Jaka Haryatno,Buchori,Zebulon,Renee,Indri"; @larik = split(',',$nama); print "@larik"; Pada string yang diisikan ke variabel nama, yang dihilangkan antar kata agar diubah ke bentuk larik adalah karakter: ‘,’. Mengubah bentuk larik ke string Contoh: larik=("Segera","saksikan","siaran","langsung","basket","di","stasiun","Sagoeman","TV","."); larik2str.pl @larik=("Segera","saksikan","siaran","langsung","basket","di","stasiun","Sagoeman","TV","."); $kata = join(',',@larik); print "$kata";

Teknik PUSH dan POP pada elemen larik

Misalkan: sejumlah nama siswa/i dimasukkan ke dalam larik Data, sebagai berikut: Data = (”Mulyani”,”Boedyotto”,”Rahma”,”Tina”); Untuk mendapatkan jumlah elemen larik Data digunakan fungsi: scalar(@Data); Seperti ditunjukkan script berikut: pjglarik.pl @Data=("Mulyani","Boedyotto","Rahma","Tina"); $N=scalar(@Data); print "Larik Data: "; for($i=0;$i<$N;$i++) { print $Data[$i] ," "; } print "\nPanjang larik Data = ", $N; Jika ingin dimasukkan elemen baru ke larik Data bernilai ‘Nahason’, maka akan ditambahkan ke setelah elemen terakhir; yakni setelah elemen ke-3, elemen baru menempati posisi indeks ke-4 (larik dimulai indeks ke-0). Hasilnya sebagai berikut: Data = (‘”Mulyani”,”Boedyotto”,”Rahma”,”Tina”,”Nahason”);

Page 39: About PERL script

www.geocities.com/raja_pangalengge/PEd

39

push1.pl @Data=("Mulyani","Boedyotto","Rahma","Tina"); $N=scalar(@Data); print "Larik Data: "; for($i=0;$i<$N;$i++) { print $Data[$i] ," "; } push(@Data, "Nahason"); print "\nLarik Data yang baru: ", "@Data"; Baris kode ini: print "\nLarik Data yang baru: ", "@Data"; dapat juga dituliskan begini: print "\nLarik Data yang baru: @Data"; Menambah sekaligus dua elemen baru: push2.pl @Data=("Mulyani","Boedyotto","Rahma","Tina"); $N=scalar(@Data); print "Larik Data: "; for($i=0;$i<$N;$i++) { print $Data[$i] ," "; } push(@Data, "Nahason","Moniqe"); print "\nLarik Data yang baru: ", "@Data"; Menambah elemen baru di awal elemen larik: shift1.pl @Data=("Mulyani","Boedyotto","Rahma","Tina"); $N=scalar(@Data); print "Larik Data: "; for($i=0;$i<$N;$i++) { print $Data[$i] ," "; } unshift(@Data, "Sentot"); print "\nLarik Data yang baru: ", "@Data"; Menambah sekaligus dua elemen baru di awal elemen larik: shift2.pl @Data=("Mulyani","Boedyotto","Rahma","Tina"); $N=scalar(@Data); print "Larik Data: "; for($i=0;$i<$N;$i++) { print $Data[$i] ," "; } unshift(@Data, "Sentot","Latief"); print "\nLarik Data yang baru: ", "@Data"; Menampilkan isi larik Data dapat juga digunakan script berikut: @Data=("Mulyani","Boedyotto","Rahma","Tina"); $A="@Data"; print "\n", $A; Mengetahui panjang larik Data dapat juga digunakan script berikut: @Data=("Mulyani","Boedyotto","Rahma","Tina");

Page 40: About PERL script

www.geocities.com/raja_pangalengge/PEd

40

$aa=@Data; print "\n", $aa; Contoh: larik siswa berisi elemen-elemen sebagai berikut: siswa = (”Moniqe”,”Lue”,”Rose”,”Tina”,”Nahason”,”Mulyani”); Jika elemen ‘Mulyani’ ingin dihapus, maka digunakan script berikut: pop1.pl @siswa=("Moniqe","Lue","Rose","Tina","Nahason","Mulyani"); $N=scalar(@siswa); print "Larik siswa: "; for($i=0;$i<$N;$i++) { print $siswa[$i] ," "; } pop(@siswa); print "\nLarik siswa yang baru: ", "@siswa"; Menghapus sekaligus dua elemen di akhir larik: pop2.pl @siswa=("Moniqe","Lue","Rose","Tina","Nahason","Mulyani"); $N=scalar(@siswa); print "Larik siswa: "; for($i=0;$i<$N;$i++) { print $siswa[$i] ," "; } pop(@siswa); print "\nLarik siswa yang baru: ", "@siswa"; pop(@siswa); print "\nLarik siswa yang baru lagi: ", "@siswa"; Menghapus elemen di awal larik: shift1.pl @siswa=("Moniqe","Lue","Rose","Tina","Nahason","Mulyani"); $N=scalar(@siswa); print "Larik siswa: "; for($i=0;$i<$N;$i++) { print $siswa[$i] ," "; } shift(@siswa); print "\nLarik siswa yang baru: ", "@siswa"; Menghapus sekaligus dua elemen di awal larik: shift2.pl @siswa=("Moniqe","Lue","Rose","Tina","Nahason","Mulyani"); $N=scalar(@siswa); print "Larik siswa: "; for($i=0;$i<$N;$i++) { print $siswa[$i] ," "; } shift(@siswa); print "\nLarik siswa yang baru: ", "@siswa"; shift(@siswa); print "\nLarik siswa yang baru lagi: ", "@siswa";

Page 41: About PERL script

www.geocities.com/raja_pangalengge/PEd

41

Tabel Fungsi Larik: Function Definisi

push(@array, element) menambahkan ke akhir @array pop(@array) menghapus elemen terakhir dari @array unshift(@array, element) menambahkan ke awal @array shift(@array) menghapus elemen pertama dari @array delete $array[index] menghapus elemen berdasar indeks

Contoh: Mencari mean dan modus dari 7 kali pemasukan bilangan oleh user: meanmodus.pl @bil; print "Pemasukan bilangan sebanyak 7 kali\n"; for($i=0;$i<7;$i++) { print "Data[", $i+1 ,"]: "; chomp($bil[$i]=<>); } $tot=0; for($i=0;$i<7;$i++) { $tot+=$bil[$i]; } $mean=$tot/7; print "Rata-rata = ", $mean; print "\n"; print "Data diurutkan dari kecil ke besar: "; for($i=0;$i<7;$i++) { for($j=0;$j<7-$i-1;$j++) { if($bil[$j]>$bil[$j+1]) { $temp=$bil[$j]; $bil[$j]=$bil[$j+1]; $bil[$j+1]=$temp; } } } print "@bil"; $hasil=0; for($j=0;$j<7;$j++) { if($bil[$j]==$bil[$j+1]) { $hasil+=1; } } print "\nModus sebanyak ", $hasil+1;

Terlihat pada blok script meanmodus.pl, pencarian banyaknya modus bilangan dilakukan setelah bilangan-bilangan tersebut diurutkan terlebih dahulu; dengan demikian pencarian banyak modus dapat dilakukan dengan mudah. Selain modus, juga dicari nilai rata-tara bilangan tersebut (mean), dengan cara setiap bilangan ditambahkan ke sebuah variabel penampung, $hasil, yang di-reset=0. sehingga tanpa bilangan-bilangan itu pun diurutkan terlebih dahulu, nilai mean dapat dicari karena tujuannya hanyalah pencacahan. Pencacahan adalah penjumlahan secara berulang-ulang sebanyak sekian kali untuk mendapatkan total akhir jumlah bilangan (disebut juga dengan counter).

Page 42: About PERL script

www.geocities.com/raja_pangalengge/PEd

42

Tampilan jalannya script meanmodus.pl: Kelemahan script meanmodus.pl ini adalah belum dapat menentukan nilai modus -nya, hanya banyaknya modus yang muncul; untuk itu alternatif lain, dapat dituliskan sebagai berikut: meanmodus1.pl @bil; print "Pemasukan bilangan sebanyak 7 kali\n"; for($i=0;$i<7;$i++) { print "Data[", $i+1 ,"]: "; chomp($bil[$i]=<>); } $tot=0; for($i=0;$i<7;$i++) { $tot+=$bil[$i]; } $mean=$tot/7; print "Rata-rata = ", $mean; print "\n"; print "Data diurutkan dari kecil ke besar: "; for($i=0;$i<7;$i++) { for($j=0;$j<7-$i-1;$j++) { if($bil[$j]>$bil[$j+1]) { $temp=$bil[$j]; $bil[$j]=$bil[$j+1]; $bil[$j+1]=$temp; } } } print "@bil"; $hasil=0; for($i=0;$i<7;$i++) { $ref=$bil[$i]; if($bil[$i]==$bil[$i+1]) { $hasil+=1; } for($j=0;$j<7-$i-1;$j++) { if($bil[$j]==$ref) { $x=$ref; }

Page 43: About PERL script

www.geocities.com/raja_pangalengge/PEd

43

} } print "\nModus=", $x ," sebanyak ", $hasil+1; Terlihat pada script meanmodus1.pl, untuk mendapatkan nilai modus digunakan variabel ref sebagai penampung sementara terhadap nilai pada blok looping pertama ($i) ke blok looping ke-2 ($j) jika ditemukan bilangan yang sama. Tampilan jalannya script meanmodus1.pl: • Menampilkan Tabel Perkalian 1 s.d 10

Untuk mendapatkan tabel ini cukup digunakan statement logika perulangan for..i, sebagai berikut: kali110.pl print "Tabel Perkalian dari 1 s.d 10:\n"; for($i=1;$i<=10;$i++) { for($j=1;$j<=10;$j++) { print $i ,"*", $j ,"=", $i*$j; print "\t"; } print "\n"; } Tampilan jalannya script kali110.pl:

Page 44: About PERL script

www.geocities.com/raja_pangalengge/PEd

44

Penggunaan Fungsi (Function) Function (fungsi) dalam sebuah bahasa pemrograman dapat didefinisikan sebagai suatu blok program yang berisi suatu kode untuk mengerjakan suatu bagian lain dalam program itu sendiri. Seperti halnya dengan sebuah fungsi matematika yang dikenal dalam aljabar matematika dasar yang dimaksudkan untuk merepresentasikan sebuah pengerjaan terhadap serangkaian operasi matematika. Misalkan: Dalam matematika dasar diketahui sejumlah rangkaian pengerjaan sebagai berikut: (2).3 + 5 = 11 (0.5).3 + 5 = 6.5 (-2).3 + 5 = -1 (10).3 + 5 = 35 maka, dapat dibangun sebuah fungsi matematika untuk mengerjakan instruksi tersebut yakni sebuah fungsi regresi linier: 3x + 5 ; dimana x = {Bilangan Real}, atau dapat ditulikan kebali fungsi ini menjadi: y = f(x) = 3x + 5 Kasus ini dapat dituliskan dalam script PERL sebagai berikut: fungsi1.pl $x=2; print "x = ", $x , "\n"; $hasil=itung($x); sub itung { $y=3*$x+5; print "Hasil = ", $y; exit; } Fungsi juga dapat digunakan untuk menampilkan pesan ke layar, seperti berikut ini: fpesan.pl $jawab=1; if($jawab==1) { tampilkan1(); } else { tampilkan2(); } sub tampilkan2() { print "Oke, semoga sukses..."; exit; } sub tampilkan1() { print "Selamat Datang di kota Bandung."; exit; } Contoh: Menampilkan nilai f(x)=3x+5 untuk rentang x=1 s.d x=7. fungsi2.pl print "x\t3x+5\n";

Page 45: About PERL script

www.geocities.com/raja_pangalengge/PEd

45

print "=============\n"; for($x=1;$x<=7;$x++) { print $x ,"\t", itung($x), "\n"; } sub itung { $y=3*$x+5; } Analog pada script fungsi2.pl, namun menggunakan metode user-input: 1fungsi12.pl print "Batas Bawah: "; chomp($bawah=<>); print "Batas Atas: "; chomp($atas=<>); print "x\t3x+5\n"; print "=============\n"; for($x=$bawah;$x<=$atas;$x++) { print $x ,"\t", itung($x), "\n"; } sub itung { $y=3*$x+5; } Contoh: Selesai kasus ini, f(x,y) = 3x+5y; dimana x=y, untuk x=-2 s.d x=3. Solusi: 1fungsi3.pl print "Batas Bawah: "; chomp($bawah=<>); print "Batas Atas: "; chomp($atas=<>); print "x\ty\t3x+5y\n"; print "=========================\n"; for($x=$bawah;$x<=$atas;$x++) { $y=$x; print $x ,"\t", $y ,"\t", itung($x,$y), "\n"; } sub itung { $z=3*$x+5*$y; } Contoh:

Page 46: About PERL script

www.geocities.com/raja_pangalengge/PEd

46

Kdkk

Kdkd Kdkd Kdkd Dkdkd Kdkd Kdkd Kdkdk Kdkdk kdkdk

Page 47: About PERL script

www.geocities.com/raja_pangalengge/PEd

47