SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
www.geocities.com/raja_pangalengge/PEd



                                 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 Filessambar41perl




                                                                                         1
www.geocities.com/raja_pangalengge/PEd




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:




                                                                                     2
www.geocities.com/raja_pangalengge/PEd



Script pertama Anda!
Misalkan akan ditampilkan sebuah string:” Selamat Datang di kota Dolok Sanggul.”
ke layar komputer.
hallo.pl
print quot;Selamat Datang di kota Dolok Sanggul.quot;;

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 quot;Selamat Datang di kota Dolok Sanggul.nquot;;
print quot;Pesan dari Pangalengge Educations.quot;;

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.


                                                                                     3
www.geocities.com/raja_pangalengge/PEd



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:
a5         ; b -3     ;c 2

Sintaksnya sebagai berikut:
ngitung.pl
$a=5;
$b=-3;
$c=2;
$hasil=($a*($c-$b))%$c;
print quot;Hasil = quot;, $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:
     (a + b + c + d ÷ e )
M=
              5
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.



                                                                                   4
www.geocities.com/raja_pangalengge/PEd




aljabar.pl
$a=-8;
$b=-2;
$c=12;
$d=6;
$e=2;
$m=($a+$b+$c+$d/$e) / 5;
print quot;Hasil = quot;, $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=quot;/cgi-bin/bukutamu.plquot;>
<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=quot;Okequot;></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(quot;Cquot;, hex($1))/eg;
   $value =~ s/<!--(.|n)*-->//g;



                                                                                5
www.geocities.com/raja_pangalengge/PEd




    # Convert HTML stuff as necessary.
    $value =~ s/<([^>]|n)*>//g;

    $FORM{$name} = $value;
}

&missing_name unless $FORM{'name'};
&missing_msg unless $FORM{'msg'};

open (FILE, quot;$bookfilequot;) || die quot;Can't open $bookfile: $!nquot;;
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;

open (FILE, quot;>$bookfilequot;) || die quot;Can't open $bookfile: $!nquot;;

for ($i = 0; $i <= $SIZE; $i++)
{
    $_=$LINES[$i];

    if (/<!--top-->/)
    {
             print FILE quot;<!--top-->nquot;;

            print FILE quot;<b>$FORM{'msg'}</b><br>nquot;;
            print FILE quot;$FORM{'name'}quot;;
            if ($FORM{'email'})
            {
                     print FILE quot; &lt;<A HREF=quot;mailto:$FORM{'email'}quot;>quot;;
                     print FILE quot;$FORM{'email'}</A>&gt;quot;;
            }

            print FILE quot;<HR>nquot;;
    }
    else
    {
            print FILE $_;
    }
}

close (FILE);

print quot;<HTML><HEAD><TITLE>.:Selesai:.</TITLE></HEAD><BODY bgcolor=white>nquot;;
print quot;<FONT SIZE=5 COLOR=#996633><B>Terima kasih Atas
Kunjungannya</B></FONT>nquot;;
print quot;<BR><BR>Data Anda berikut telah terseimpan di Buku Tamu kami::<HR>nquot;;
print quot;<b>$FORM{'msg'}</b><br>nquot;;
print quot;$FORM{'name'}quot;;

if ($FORM{'email'})
{
     print quot; &lt;<A HREF=quot;mailto:$FORM{'email'}quot;>quot;;
     print quot;$FORM{'email'}</A>&gt;quot;;
}

print quot;<P><HR>nquot;;
print quot;<A HREF=quot;/latihan/bukutamu.htmquot;>Isian Buku Tamu.</A>nquot;;
print quot;</BODY></HTML>nquot;;



                                                                                    6
www.geocities.com/raja_pangalengge/PEd




exit;

sub missing_name
{
   print quot;<HTML><HEAD><TITLE>Missing Name</TITLE></HEAD><BODY>nquot;;
   print quot;<FONT SIZE=5 COLOR=#996633><B>Name field is blank...</B></FONT>nquot;;
   print quot;<BR><BR>Please repost the name section of the guestbook.<P>nquot;;
   print quot;Return to the <a href=quot;/samples/book.htmquot;>Guest Book</a>.nquot;;
   print quot;</BODY></HTML>nquot;;

    exit;
}

sub missing_msg
{
   print quot;<HTML><HEAD><TITLE>Missing Comments</TITLE></HEAD>nquot;;
   print quot;<FONT SIZE=5 COLOR=#996633><B>Comment field is
blank...</B></FONT>nquot;;
   print quot;<BR><BR>Please repost the comment section of the guestbook.<P>nquot;;
   print quot;Return to the <a href=quot;/samples/book.htmquot;>Guest Book</a>.nquot;;
   print quot;</BODY></HTML>nquot;;

    exit;
}



Untuk menjalankannya digunakan interpreter Sambar Server            v4.1 dengan
metode CGI, seperti ditunjukkan pada tampilan berikut ini:




                                                                               7
www.geocities.com/raja_pangalengge/PEd




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 quot;Baris ini dieksekusi oleh interpreterquot;;

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



                                                                                     8
www.geocities.com/raja_pangalengge/PEd



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



Operator
Operator digunakan untuk mengerjakan isi operand berdasar jenis instruksi yang
ditentukan pada badan program.
Misalkan:
z ← a+b
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 ,quot; + quot;, $b ,quot; = quot;, $Z;

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

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

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




                                                                                 9
www.geocities.com/raja_pangalengge/PEd



•   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 ,quot; % quot;, $b ,quot; = quot;, $Z;

    Bedakan dengan script berikut:
    bagisisa1.pl
    $a=69;
    $b=7;
    $Z=$a%$b;
    print $a ,quot; % quot;, $b ,quot; = quot;, $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 quot;Sin 30 = quot;, $sin30 ,quot;nquot;;
    print quot;Sin 90 = quot;, $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 quot;Cos 30 = quot;, $cos30 ,quot;nquot;;
    print quot;Cos 90 = quot;, $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);




                                                                          10
www.geocities.com/raja_pangalengge/PEd



    $cosinus45=cos($b);
    $tgt30=($sinus30)/($cosinus30);
    $tgt45=($sinus45)/($cosinus45);
    print quot;Tan 30 = quot;, $tgt30 ,quot;nquot;;
    print quot;Tan 45 = quot;, $tgt45;

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

•   Nilai Absolut
    Misalkan:
    a = -0.45, maka nilai absolut(a) = 0.45
    absolut.pl
    $a=-0.45;
    $Z=abs($a);
    print quot;Nilai absolut quot;, $a ,quot; = quot;, $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 quot;Isi variabel ini adalah karakter squot;;
    }
    if(($bil>=7 && $itu=='R')||$ini=='s') {
      print quot;Isi variabel bil adalah 7quot;;
    }



    OR, disimbolkan dengan ‘||’, menyatakan bahwa keluaran bernilai 1 (TRUE)
        jika dan hanya jika salah satu masukan bernilai 1 (TRUE).
    lOr.pl
    $ini=quot;Aquot;;
    $itu=quot;aquot;;
    $bil=7;
    if(($bil<=7 && $itu==quot;aquot;)||$ini==quot;aquot;) {
     print quot;Isi variabel itu adalah karakter aquot;;
    }
    if($bil>7 || $itu==quot;Aquot;) {
      print quot;nIsi variabel bil adalah 7quot;;
    }

    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.


                                                                                  11
www.geocities.com/raja_pangalengge/PEd



    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 quot;Apakabar?quot;;
    } else {
        print quot;Mau ke mana?quot;;
      }

    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 quot;Isi c = quot;, $c;

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

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

    e = 2.7183
    ekspo.pl
    $bil=exp(1);
    print quot;Bilangan e = quot;, $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 quot;Log-Natural(quot;, $bil ,quot;) = quot;, $hasil;

•   Logaritma 10 (menggunakan bilangan dasar 10)



                                                                                     12
www.geocities.com/raja_pangalengge/PEd



    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:
                     ln( x)
    log( x) =
                    ln(10)
    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!
        log b c ⇔ a c = b
    a

    log10.pl
    $bil=1000;
    $hasil=(log($bil))/(log(10));
    print quot;ln(quot;, $bil ,quot;) = quot;, log($bil) ,quot;nquot;;
    print quot;Log(quot;, $bil ,quot;) = quot;, $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:
            Tabel Kebenaran
              Logika X-OR

                              +B
        A       B        A
        0       0             0
        0       1             1
        1       0             1
        1       1             0


    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 quot;Hasil = quot;, $hasil;




                                                                                     13
www.geocities.com/raja_pangalengge/PEd



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 quot;Nilai: quot;, $hasil;
    Hasil = 4.
    Post-increment: masukkan isi $b, lalu tambahkan 1 ke isi $b
    postincre.php
    $b=3;
    $hasil=$b++;
    print quot;Nilai: quot;, $hasil;
    Hasil = 3.
    Pre-decrement: kurangkan isi $c dengan 1, hasilnya masukkan ke $c
    predecre.php
    $c=3;
    $hasil=--$c;
    print quot;Nilai: quot;, $hasil;
    Hasil = 2.
    Post-decrement: masukkan isi $d, lalu kurangkan isi $b dengan 1
    postdecre.php
    $d=3;
    $hasil=$d--;
    print quot;Nilai: quot;, $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=quot;17quot;;
$b=quot;2quot;;
$hasil1=$b+$a;
$hasil2=$a|$b;
print quot;Isi variabel hasil1 = quot;, $hasil1;
print quot;nIsi variabel hasil2 = quot;, $hasil2;



                                                                                 14
www.geocities.com/raja_pangalengge/PEd




Operator    Penugasan    (assignment                 digunakan     untuk
                                        operator),
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 quot;Isi variabel a = quot;, $a;

jika:
    $a-=b;
maka
   $a=2
assignment2.pl
$a=6;
$b=4;
$a-=$b;
print quot;Isi variabel a = quot;, $a;

jika:
    $a*=b;
maka
   $a=24
assignment3.pl
$a=6;
$b=4;
$a*=$b;
print quot;Isi variabel a = quot;, $a;

jika:
    $a/=b;
maka
   $a=1.5
assignment4.pl
$a=6;
$b=4;
$a/=$b;
print quot;Isi variabel a = quot;, $a;

jika:
    $a*=b;
maka
   $a=2
assignment5.pl
$a=6;
$b=4;



                                                                       15
www.geocities.com/raja_pangalengge/PEd



$a%=$b;
print quot;Isi variabel a = quot;, $a;

jika:
    $a&=b;
maka
   $a=4
assignment6.pl
$a=6;
$b=4;
$a&=$b;
print quot;Isi variabel a = quot;, $a;

jika:
    $a*=b;
maka
   $a=6
assignment7.pl
$a=6;
$b=4;
$a|=$b;
print quot;Isi variabel a = quot;, $a;

jika:
    $a⊕=b;
maka
   $a=2
assignment8.pl
$a=6;
$b=4;
$a^=$b;
print quot;Isi variabel a = quot;, $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(quot;Hello CGIquot;),
   p(quot;Hello CGIquot;),
   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=quot;contoh/oke.txtquot;;
open (berkas) || die quot;Tidak dapat membuka filenquot;;




                                                                              16
www.geocities.com/raja_pangalengge/PEd



print <berkas>;
close (berkas);

Tampilan jalannya script:




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




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



                                                                                  17
www.geocities.com/raja_pangalengge/PEd



        14         E
        15         F
        16        10
        17        11

    hex2dec.pl
    $a=23;
    print quot;0xquot;, $a ,quot; dalam desimal = quot;, 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 = (4x81)+(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 quot;0quot;, $b ,quot; dalam desimal = quot;, oct($b);




                                                Komputer senantiasa
                                             menampilkan dalam bilangan
                                                      Desimal




                                                                                18
www.geocities.com/raja_pangalengge/PEd



Mekanisme konversi suatu karakter ke bilangan
Sintaks-nya:
    ord($kara);
kar2num.pl
$a1='A';
$a2='a';
print quot;Karakter quot;, $a1 ,quot; dikodekan DECquot;, ord($a1);
print quot;nKarakter quot;, $a2 ,quot; dikodekan DECquot;, ord($a2);

Mekanisme konversi suatu bilangan ke karakter
Sintaks-nya:
    chr($bil);
num2char.pl
$a1=65;
$a2=95;
print quot;DEC quot;, $a1 ,quot; direpresentasikankan menjadi karakter quot;, chr($a1);
print quot;nDEC quot;, $a2 ,quot; direpresentasikankan menjadi karakter quot;, chr($a2);

Contoh: Menampilkan Tabel ASCII 8-bit dari DEC65 s.d DEC75.
ascii6575.pl
print quot;Tabel ASCIInquot;;
print quot;==============nquot;;
for($i=65;$i<=75;$i++) {

 print $i ,quot;tquot;, chr($i) ,quot;nquot;;
}
#’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.


                                                                              19
www.geocities.com/raja_pangalengge/PEd



tanya.pl
print quot;Berapa umur Anda?: quot;;
$umur = <>;
print quot;WOW! Umur Anda ternyata quot;, $umur ,quot; tahun!quot;;
print quot;nSekarang sekolah di mana?: quot;;
$sekolah=<stdin>;
print quot;Anda sekolah di quot;, $sekolah ,quot; ya....quot;;

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 quot;Berapa umur Anda?: quot;;
chomp($umur=<>);
print quot;WOW! Umur Anda ternyata quot;, $umur ,quot; tahun!quot;;
print quot;nSekarang sekolah di mana?: quot;;
chomp($sekolah=<stdin>);
print quot;Anda sekolah di quot;, $sekolah ,quot; ya....quot;;

Tampilan jalannya script tanya1.pl:




                                                                            20
www.geocities.com/raja_pangalengge/PEd



Contoh: Analog dengan script ascii6575.pl, namun batas bawah=65, dan
batas atas=75 didapatkan dari user-input:
asciit.pl
print quot;Kode dimulai dari?: quot;;
$bawah=<>;
print quot;Kode diakhiri pada?: quot;;
$atas=<>;
print quot;nquot;;
print quot;Tabel ASCIInquot;;
print quot;==============nquot;;
for($i=$bawah;$i<=$atas;$i++) {

 print $i ,quot;tquot;, chr($i) ,quot;nquot;;
}

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 quot;Tentukan jari-jari lingkaran?(cm): quot;;
chomp ($r = <>);
$diameter = (2 * $r);
$luas = (3.14 * ($r ** 2));
$K = ($diameter * 3.14);
print quot;Jika sebuah lingkaran dengan jari-jari = quot;, $r ,quot;cm maka:nquot;;
print quot;Diameter = quot;, $diameter ,quot;cmnquot;;
print quot;Keliling = quot;, $K ,quot;cmnquot;;
print quot;Luas = quot;, $luas ,quot;cm^2quot;;




                                                                                 21
www.geocities.com/raja_pangalengge/PEd



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 quot;Isi variabel a di bawah nilai 5.quot;;
   } else {
      print quot;Isi variabel a di atas nilai 5.quot;;
     }

   Contoh:
   ifthenelse1.pl
   print quot;Masukkan bilangan 0 s.d 9: quot;;
   $a=<>;
   if($a<0||$a>9) {
    print quot;Maaf, di luar range!quot;;
   } else {
      print quot;Anda telah benar memasukkan bilangannya.nquot;;
      print quot;Terima kasih, dan semoga permohonan Anda selama ini terkabulkan...quot;;
     }

   Tampilan jalannya script ifthenelse1.pl:




                                                                                    22
www.geocities.com/raja_pangalengge/PEd



Do..while statement
Bentuk Umum:
Do
{
       kerjakan statement ini;
    while(                                    )
              kondisi ini bernilai true
}

Contoh:
dowhile.pl
$a=5;
do {
 $a-=1;
 print $a ,quot;nquot;;
} 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 ,quot;nquot;;
}



For … i statement
Bentuk Umum:
for(                                  )
          kondisi ini bernilai true
{
       kerjakan statement ini;
}

Contoh:
fori.pl
for($a=5;$a>0;--$a) {
 print $a ,quot;nquot;;
}

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




                                                                                     23
www.geocities.com/raja_pangalengge/PEd



   fori00.pl
   for($i=0;$i<3;$i++) {
    for($j=0;$j<3;$j++) {
      if($i+$j!=3) {
       print quot;i=quot;, $i ,quot;; j=quot;, $j ,quot;nquot;;
      }
    }
   }

   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 ,quot;nquot;;
   }
    if($a=1) {
     print quot;Selesai...nquot;;
    }




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)




                                                                                       24
www.geocities.com/raja_pangalengge/PEd




  Gambar Klasifikasi Utama Struktur Kontrol Program pada Bahasa Pemrograman


Contoh:
User harus memasukkan nilai=1 agar keluar dari proses looping (berulang).
cobat.pl
print quot;Jangan masukkan nilai selain bilangan 1: quot;;
$bil=<>;
if($bil!=1) {
 do
 {
   print quot;Ketikkan password: quot;;
   $bil=<>;
 } while($bil!=1);
  print quot;Terima kasih, ya...quot;;
} else {
   print quot;Terima kasih, semoga permohonan Anda selama ini terkabulkan...quot;;
  }



   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



                                                                                 25
www.geocities.com/raja_pangalengge/PEd



$a=5;
$hasil=1;
if($a==0||$a==1) {
 print $a ,quot;! = quot;, $hasil;
} else {
  for($i=$a;$i>1;$i--) {
    $hasil*=$i;
  }
  print $a ,quot;! = quot;, $hasil;
}

Bila menggunakan metode user-input, bisa dituliskan sebagai berikut:
5faktorial.pl
print quot;Mencari nilai faktorial bilangan (2 s.d 9)nquot;;
print quot;Ketikkan bilangan?: quot;;
chomp($a=<>);
if($a<0||$a>9) {
 print quot;Maaf, di luar range...quot;;
} else {
   $hasil=1;
   if($a==0||$a==1) {
    print $a ,quot;! = quot;, $hasil;
   } else {
      for($i=$a;$i>1;$i--) {
       $hasil*=$i;
      }
     print $a ,quot;! = quot;, $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 ,quot;! = quot;, $hasil;
} else {
  for($i=0;$i<$a;$i++) {
    $hasil*=($a-$i);
  }
  print $a ,quot;! = quot;, $hasil;
}



                                                                                 26
www.geocities.com/raja_pangalengge/PEd




                                                                          Algoritma
Bila menggunakan         metode                   dengan   menggunakan
                                     user-input
Mangabing:
5faktorial1.pl
print quot;Mencari nilai faktorial bilangan (2 s.d 9)nquot;;
print quot;Ketikkan bilangan?: quot;;
chomp($a=<>);
if($a<0||$a>9) {
 print quot;Maaf, di luar range...quot;;
} else {
   $hasil=1;
   if($a==0||$a==1) {
    print $a ,quot;! = quot;, $hasil;
   } else {
      for($i=0;$i<$a;$i++) {
       $hasil*=($a-$i);
      }
     print $a ,quot;! = quot;, $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 quot;Masukkan nilai >= 7: quot;;
$tanya = <>;
 if($tanya<7) {
   print quot;Maaf, nilai harus >= 7.quot;;
 } else {
    print quot;Nilai yang Anda isikan benar.quot;;
   }

Ekspresi quot;Maaf, nilai harus >= 7.quot;, akan bernilai true jika variabel tanya
diisikan >= 7, sebaliknya jika variabel tanya diisikan <7, maka ekspresi bernilai
false dan menampilkan quot;Nilai yang Anda isikan benar.quot;.

Lebih jelasnya dapat terlihat pada contoh berikut:
kas30.pl
print quot;Operand-1 harus lebih besar dari Operand-2nquot;;
print quot;Operand-1?: quot;;
$op1=<>;
print quot;Operand-2?: quot;;
$op2=<>;
if($op1>$op2) {
 print quot;Nilai : true.quot;;
} else {
    print quot;Nilai : false.quot;;
  }



                                                                                 27
www.geocities.com/raja_pangalengge/PEd




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 quot;string[quot;, $i ,quot;]: quot;, $string[$i];
 print quot;nquot;;
}

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 quot;string[quot;, $i ,quot;]: quot;, $string[$i];
 print quot;nquot;;
}

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 quot;Isi elemen-elemen larik huruf = quot;, @huruf ,quot;nquot;;
print quot;Elemen dimulai dari indeks ke-0 = quot;, $huruf[0];

Tipe Data String:
1kata.pl
@kata=(quot;7aquot;,quot;satoequot;,quot;[-5c]quot;,quot;Sabrinaquot;,quot;Hquot;,quot;Aaquot;);
print quot;Isi elemen-elemen larik kata = quot;, @kata ,quot;nquot;;
print quot;Elemen dimulai dari indeks ke-0, isi elemen ke-3 = quot;, $kata[2];




                                                                                     28
www.geocities.com/raja_pangalengge/PEd



Tipe Data Numerik:
1bilangan.pl
@bil=(7,56,-5,-11.2,90,0.6);
print quot;Isi elemen-elemen larik bil = quot;, @bil ,quot;nquot;;
print quot;Elemen dimulai dari indeks ke-0, isi elemen ke-4 = quot;, $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 quot;Kata yang akan dimanipulasi: quot;;
for($i=0;$i<$N;$i++) {
 print $Kara[$i] , quot; quot;;
}
print quot;nquot;;
print quot;Dimanipulasi dengan Algoritma Marbulang P7:quot;;
print quot;nquot;;
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 quot;Panjang kata yang diinginkan?: quot;;
$N=<>;
@kata;
for($i<0;$i<$N;$i++) {
 print quot;Karakter ke-quot;, $i+1 ,quot;: quot;;
 $kata[$i]=<>;
}
print quot;nquot;;
print quot;Kata yang Anda ketikkan: nquot;;
for($i=0;$i<$N;$i++) {
 print $kata[$i];




                                                                                   29
www.geocities.com/raja_pangalengge/PEd



}
print quot;Selesai...quot;;




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:
          − 2 2 1
A2 x 3 =         
          3 − 1 5

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 quot;A[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j];
   print quot;nquot;;
 }
}

Tampilan jalannya script matriks.pl:




                                                                                        30
www.geocities.com/raja_pangalengge/PEd




                − 2 2 1                      − 10 10 5 
Jika : A2 x 3 =                x   5    =
                                               15 − 5 25
                3 − 1 5                                


                                             − 10 10 5 
Maka hasil matriks yang baru: A2 x 3 =                 
                                              15 − 5 25
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 quot;A[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j];
   print quot;nquot;;
 }
}
print quot;nquot;;
print quot;[[A] x 5, hasilnya = nquot;;
for($i=0;$i<2;$i++) {
 for($j=0;$j<3;$j++) {
   print quot;C[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j]*5;
   print quot;nquot;;
 }
}
print quot;Dituliskan secara lengkap:nquot;;
for($i=0;$i<2;$i++) {
 for($j=0;$j<3;$j++) {
   print quot;[quot;, $A[$i][$j]*5 ,quot;]quot;;
 }
   print quot;nquot;;
}

Tampilan jalannya script matrik.pl:




                                                                                     31
www.geocities.com/raja_pangalengge/PEd




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 quot;A[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j];
   print quot;nquot;;
 }
}
print quot;nquot;;
print quot;[C]=[A] x 5, hasilnya = nquot;;
for($i=0;$i<2;$i++) {
 for($j=0;$j<3;$j++) {
   $C=$A[$i][$j]*5;
   print quot;C[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $C;
   print quot;nquot;;
 }
}

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 quot;A[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j];
   print quot;nquot;;
 }
}
print quot;nquot;;
print quot;[C]=[A] x 5, hasilnya = nquot;;
for($i=0;$i<2;$i++) {
 for($j=0;$j<3;$j++) {
   $C=$A[$i][$j]*5;
   print quot;C[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $C;
   print quot;nquot;;
 }



                                                                                        32
www.geocities.com/raja_pangalengge/PEd



}
print quot;Dituliskan secara lengkap:nquot;;
for($i=0;$i<2;$i++) {
 for($j=0;$j<3;$j++) {
   print quot;[quot;, $C ,quot;]quot;;
 }
   print quot;nquot;;
}




Misalkan:
A2x3 - B3X2, hasilnya disimpankan ke matriks baru, C, dengan ukuran baru 2x2;
disebut matriks kembar.
          − 2 2 1
A2 x 3 =            
          3 − 1 5
         1 0 − 2
B2 x 3 =            
         3 − 3 1 
         (−2 − 1)   (2 − 0)   (1 − (−2)) − 3 2 3
C 2 x3 =                                 =
                                 (5 − 1)   0 2 4
          (3 − 3) (−1 − (−3))                   
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 quot;Matriks A:nquot;;



                                                                               33
www.geocities.com/raja_pangalengge/PEd



for($i=0;$i<2;$i++) {
 for($j=0;$j<3;$j++) {
   print quot;A[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j];
   print quot;nquot;;
 }
}
print quot;nMatriks B:nquot;;
for($j=0;$j<2;$j++) {
 for($k=0;$k<3;$k++) {
   print quot;B[quot;, $j+1 ,quot;][quot;, $k+1 ,quot;]=quot;, $B[$j][$k];
   print quot;nquot;;
 }
}
print quot;nquot;;
print quot;[A] - [B], hasilnya: nquot;;
for($i=0;$i<2;$i++) {
 for($k=0;$k<3;$k++) {
  print quot;C[quot;, $i+1 ,quot;][quot;, $k+1 ,quot;]=quot;, $A[$i][$k]-$B[$i][$k];
  print quot;nquot;;
 }
}

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 quot;Larik data awal:nquot;;
   for($i=0;$i<8;$i++) {
    print $data[$i] ,quot; quot;;
   }
   for($i=0;$i<8;$i++) {




                                                                                    34
www.geocities.com/raja_pangalengge/PEd



 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 quot;nSetelah diurutkan dari kecil ke besar:nquot;;
for($i=0;$i<8;$i++) {
 print $data[$i] ,quot; quot;;
}

Tampilan jalannya script min2maks.pl:




Contoh lain:
min2max.pl
@urut=(900,76,-5,45,-666,3);
print quot;Diurutkan dari terkecil ke terbesar: quot;;
  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] ,quot; quot;;
}



Contoh:
Sejumlah data dengan panjang 7, ber-tipe numerik, dimasukkan oleh user secara
acak; selanjutnya akan diurutkan dari terbesar sampai dengan terkecil.
Misalkan:



                                                                                35
www.geocities.com/raja_pangalengge/PEd



Numerik=(-11,22,-3,94,25,36,17);
Diurutkan menjadi:
Numerik=( 94,36,25,22,17,-3,-11);

maks2min.pl
@Numerik;
print quot;Masukkan data maks. 7, sbb:nquot;;
for($i=0;$i<7;$i++) {
 print quot;Data ke-quot;, $i+1 ,quot;: quot;;
 chomp($Numerik[$i]=<>);
}
print quot;nquot;;
print quot;Data yang Anda masukkan: quot;;
for($i=0;$i<7;$i++) {
 print $Numerik[$i] ,quot; quot;;
}
print quot;nquot;;
print quot;Diurutkan menjadi: quot;;
  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] ,quot; quot;;
}



Blok pada script maks2min.pl ini:
...
for($i=0;$i<7;$i++) {
 print $Numerik[$i] ,quot; quot;;
}

dapat digantikan seperti pada script berikut ini:
max2min1.pl
@urut;
print quot;Pemasukan data sebanyak 7 kalinquot;;
for($i=0;$i<7;$i++) {
 print quot;Data ke-quot;, $i+1 ,quot;: quot;;
 chomp($urut[$i]=<>);
}
print quot;nquot;;
 print quot;Diurutkan dari terbesar ke terkecil: quot;;
   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 quot;@urutquot;;


                                                                                 36
www.geocities.com/raja_pangalengge/PEd




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 quot;@larikquot;;

 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,quot;L$iniquot;);
 }
 @coba = sort(@coba);
 print quot;@cobaquot;;

 Mengubah bentuk string ke larik
 Contoh:



                                                                                 37
www.geocities.com/raja_pangalengge/PEd


 kalimat=quot;Segera-saksikan-siaran       langsung   basket    di   stasiun   Sagoeman
 TV.quot;;
 str2larik1.pl
 $kalimat=quot;Segera-saksikan-siaran langsung basket di stasiun Sagoeman TV.quot;;
 @larik = split('-',$kalimat);
 print quot;@larikquot;;

 Pada string yang diisikan ke variabel kalimat, yang dihilangkan antar kata
 agar diubah ke bentuk larik adalah karakter: ‘–’.

 Contoh:
 nama=quot;Tessi,Sentot Kho,Jaka Haryatno,Buchori,Zebulon,Renee,Indriquot;;
 str2larik.pl
 $nama=quot;Tessi,Sentot Kho,Jaka Haryatno,Buchori,Zebulon,Renee,Indriquot;;
 @larik = split(',',$nama);
 print quot;@larikquot;;

 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=(quot;Segeraquot;,quot;saksikanquot;,quot;siaranquot;,quot;langsungquot;,quot;basketquot;,quot;diquot;,quot;stasiunquot;,quot;Sagoemanquot;,quot;
 TVquot;,quot;.quot;);
 larik2str.pl
 @larik=(quot;Segeraquot;,quot;saksikanquot;,quot;siaranquot;,quot;langsungquot;,quot;basketquot;,quot;diquot;,quot;stasiunquot;,quot;Sagoemanquot;
 ,quot;TVquot;,quot;.quot;);
 $kata = join(',',@larik);
 print quot;$kataquot;;



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=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;);
$N=scalar(@Data);
print quot;Larik Data: quot;;
for($i=0;$i<$N;$i++) {
 print $Data[$i] ,quot; quot;;
}
print quot;nPanjang larik Data = quot;, $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”);



                                                                                 38
www.geocities.com/raja_pangalengge/PEd



push1.pl
@Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;);
$N=scalar(@Data);
print quot;Larik Data: quot;;
for($i=0;$i<$N;$i++) {
 print $Data[$i] ,quot; quot;;
}
push(@Data, quot;Nahasonquot;);
print quot;nLarik Data yang baru: quot;, quot;@Dataquot;;

Baris kode ini:
print quot;nLarik Data yang baru: quot;, quot;@Dataquot;;
dapat juga dituliskan begini:
print quot;nLarik Data yang baru: @Dataquot;;



Menambah sekaligus dua elemen baru:
push2.pl
@Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;);
$N=scalar(@Data);
print quot;Larik Data: quot;;
for($i=0;$i<$N;$i++) {
 print $Data[$i] ,quot; quot;;
}
push(@Data, quot;Nahasonquot;,quot;Moniqequot;);
print quot;nLarik Data yang baru: quot;, quot;@Dataquot;;

Menambah elemen baru di awal elemen larik:
shift1.pl
@Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;);
$N=scalar(@Data);
print quot;Larik Data: quot;;
for($i=0;$i<$N;$i++) {
 print $Data[$i] ,quot; quot;;
}
unshift(@Data, quot;Sentotquot;);
print quot;nLarik Data yang baru: quot;, quot;@Dataquot;;

Menambah sekaligus dua elemen baru di awal elemen larik:
shift2.pl
@Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;);
$N=scalar(@Data);
print quot;Larik Data: quot;;
for($i=0;$i<$N;$i++) {
 print $Data[$i] ,quot; quot;;
}
unshift(@Data, quot;Sentotquot;,quot;Latiefquot;);
print quot;nLarik Data yang baru: quot;, quot;@Dataquot;;

Menampilkan isi larik Data dapat juga digunakan script berikut:
@Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;);
$A=quot;@Dataquot;;
print quot;nquot;, $A;

Mengetahui panjang larik Data dapat juga digunakan script berikut:
@Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;);



                                                                                39
www.geocities.com/raja_pangalengge/PEd



$aa=@Data;
print quot;nquot;, $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=(quot;Moniqequot;,quot;Luequot;,quot;Rosequot;,quot;Tinaquot;,quot;Nahasonquot;,quot;Mulyaniquot;);
$N=scalar(@siswa);
print quot;Larik siswa: quot;;
for($i=0;$i<$N;$i++) {
 print $siswa[$i] ,quot; quot;;
}
pop(@siswa);
print quot;nLarik siswa yang baru: quot;, quot;@siswaquot;;

Menghapus sekaligus dua elemen di akhir larik:
pop2.pl
@siswa=(quot;Moniqequot;,quot;Luequot;,quot;Rosequot;,quot;Tinaquot;,quot;Nahasonquot;,quot;Mulyaniquot;);
$N=scalar(@siswa);
print quot;Larik siswa: quot;;
for($i=0;$i<$N;$i++) {
 print $siswa[$i] ,quot; quot;;
}
pop(@siswa);
print quot;nLarik siswa yang baru: quot;, quot;@siswaquot;;
pop(@siswa);
print quot;nLarik siswa yang baru lagi: quot;, quot;@siswaquot;;

Menghapus elemen di awal larik:
shift1.pl
@siswa=(quot;Moniqequot;,quot;Luequot;,quot;Rosequot;,quot;Tinaquot;,quot;Nahasonquot;,quot;Mulyaniquot;);
$N=scalar(@siswa);
print quot;Larik siswa: quot;;
for($i=0;$i<$N;$i++) {
 print $siswa[$i] ,quot; quot;;
}
shift(@siswa);
print quot;nLarik siswa yang baru: quot;, quot;@siswaquot;;

Menghapus sekaligus dua elemen di awal larik:
shift2.pl
@siswa=(quot;Moniqequot;,quot;Luequot;,quot;Rosequot;,quot;Tinaquot;,quot;Nahasonquot;,quot;Mulyaniquot;);
$N=scalar(@siswa);
print quot;Larik siswa: quot;;
for($i=0;$i<$N;$i++) {
 print $siswa[$i] ,quot; quot;;
}
shift(@siswa);
print quot;nLarik siswa yang baru: quot;, quot;@siswaquot;;
shift(@siswa);
print quot;nLarik siswa yang baru lagi: quot;, quot;@siswaquot;;




                                                                            40
www.geocities.com/raja_pangalengge/PEd



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 quot;Pemasukan bilangan sebanyak 7 kalinquot;;
for($i=0;$i<7;$i++) {
 print quot;Data[quot;, $i+1 ,quot;]: quot;;
 chomp($bil[$i]=<>);
}
$tot=0;
for($i=0;$i<7;$i++) {
 $tot+=$bil[$i];
}
$mean=$tot/7;
print quot;Rata-rata = quot;, $mean;
print quot;nquot;;
print quot;Data diurutkan dari kecil ke besar: quot;;
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 quot;@bilquot;;
$hasil=0;
 for($j=0;$j<7;$j++) {
  if($bil[$j]==$bil[$j+1]) {
   $hasil+=1;
  }
 }
  print quot;nModus sebanyak quot;, $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).



                                                                               41
www.geocities.com/raja_pangalengge/PEd



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 quot;Pemasukan bilangan sebanyak 7 kalinquot;;
for($i=0;$i<7;$i++) {
 print quot;Data[quot;, $i+1 ,quot;]: quot;;
 chomp($bil[$i]=<>);
}
$tot=0;
for($i=0;$i<7;$i++) {
 $tot+=$bil[$i];
}
$mean=$tot/7;
print quot;Rata-rata = quot;, $mean;
print quot;nquot;;
print quot;Data diurutkan dari kecil ke besar: quot;;
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 quot;@bilquot;;
$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;
  }



                                                                                   42
www.geocities.com/raja_pangalengge/PEd



 }
}
  print quot;nModus=quot;, $x ,quot; sebanyak quot;, $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 quot;Tabel Perkalian dari 1 s.d 10:nquot;;
    for($i=1;$i<=10;$i++) {
     for($j=1;$j<=10;$j++) {
      print $i ,quot;*quot;, $j ,quot;=quot;, $i*$j;
      print quot;tquot;;
     }
      print quot;nquot;;
    }

    Tampilan jalannya script kali110.pl:




                                                                                     43
www.geocities.com/raja_pangalengge/PEd




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 quot;x = quot;, $x , quot;nquot;;
$hasil=itung($x);
sub itung
{
 $y=3*$x+5;
 print quot;Hasil = quot;, $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 quot;Oke, semoga sukses...quot;;
 exit;
}
sub tampilkan1()
{
 print quot;Selamat Datang di kota Bandung.quot;;
 exit;
}

Contoh:
Menampilkan nilai f(x)=3x+5 untuk rentang x=1 s.d x=7.
fungsi2.pl
print quot;xt3x+5nquot;;



                                                                                44
www.geocities.com/raja_pangalengge/PEd



print quot;=============nquot;;
for($x=1;$x<=7;$x++) {
 print $x ,quot;tquot;, itung($x), quot;nquot;;
}
sub itung
{
 $y=3*$x+5;
}

Analog pada script fungsi2.pl, namun menggunakan metode user-input:
1fungsi12.pl
print quot;Batas Bawah: quot;;
chomp($bawah=<>);
print quot;Batas Atas: quot;;
chomp($atas=<>);
print quot;xt3x+5nquot;;
print quot;=============nquot;;
for($x=$bawah;$x<=$atas;$x++) {
 print $x ,quot;tquot;, itung($x), quot;nquot;;
}
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 quot;Batas Bawah: quot;;
chomp($bawah=<>);
print quot;Batas Atas: quot;;
chomp($atas=<>);
print quot;xtyt3x+5ynquot;;
print quot;=========================nquot;;
for($x=$bawah;$x<=$atas;$x++) {
 $y=$x;
 print $x ,quot;tquot;, $y ,quot;tquot;, itung($x,$y), quot;nquot;;
}
sub itung
{
 $z=3*$x+5*$y;
}




Contoh:




                                                                              45
www.geocities.com/raja_pangalengge/PEd




Kdkk




Kdkd
Kdkd
Kdkd
Dkdkd
Kdkd
Kdkd
Kdkdk
Kdkdk
kdkdk




                                           46
www.geocities.com/raja_pangalengge/PEd




                                   47

Contenu connexe

Similaire à PERL TUNTUNAN

Laporan praktikum web ke 5
Laporan praktikum web ke 5Laporan praktikum web ke 5
Laporan praktikum web ke 5sunubismel13
 
Pertemuan1 - PHP Dasar
Pertemuan1 - PHP DasarPertemuan1 - PHP Dasar
Pertemuan1 - PHP DasarAri Effendi
 
Pengantar Algoritma Pemrograman II
Pengantar Algoritma Pemrograman IIPengantar Algoritma Pemrograman II
Pengantar Algoritma Pemrograman IIformatik
 
Part 24 Perintah Record with
Part 24 Perintah Record withPart 24 Perintah Record with
Part 24 Perintah Record withSyaiful Ahdan
 
Native Xml Tutorial
Native Xml TutorialNative Xml Tutorial
Native Xml TutorialHari Setiaji
 
PLPG-Alpro-HE.pptx
PLPG-Alpro-HE.pptxPLPG-Alpro-HE.pptx
PLPG-Alpro-HE.pptxmamat45
 
Modul praktikum algoritma
Modul praktikum algoritmaModul praktikum algoritma
Modul praktikum algoritmaRony BolaNk
 
Ayo membuat program pascal
Ayo membuat program pascalAyo membuat program pascal
Ayo membuat program pascalHary Purwoko
 
Hitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERY
Hitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERYHitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERY
Hitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERYYusuf A.H.
 
Tutorial web programing x rpl 1
Tutorial web programing x rpl 1Tutorial web programing x rpl 1
Tutorial web programing x rpl 1eghha
 
265991658-Pengantar-PHP-ppt.ppt
265991658-Pengantar-PHP-ppt.ppt265991658-Pengantar-PHP-ppt.ppt
265991658-Pengantar-PHP-ppt.pptilhamsafari2
 
Membuat laporan pdf berbasis web dengan php 5.0
Membuat laporan pdf berbasis web dengan php 5.0Membuat laporan pdf berbasis web dengan php 5.0
Membuat laporan pdf berbasis web dengan php 5.0kenedyboyz
 
Bab 1 Asas Pengaturcaraan (MALAYSIA) G-Vecom
Bab 1 Asas Pengaturcaraan (MALAYSIA) G-VecomBab 1 Asas Pengaturcaraan (MALAYSIA) G-Vecom
Bab 1 Asas Pengaturcaraan (MALAYSIA) G-VecomYouTuber,G-Vecom
 
07.-Desain-Pemrograman-Web-PHP-Dasar.pdf
07.-Desain-Pemrograman-Web-PHP-Dasar.pdf07.-Desain-Pemrograman-Web-PHP-Dasar.pdf
07.-Desain-Pemrograman-Web-PHP-Dasar.pdfgamingbuat353
 

Similaire à PERL TUNTUNAN (20)

Laporan praktikum web ke 5
Laporan praktikum web ke 5Laporan praktikum web ke 5
Laporan praktikum web ke 5
 
Html dasar
Html dasarHtml dasar
Html dasar
 
Pertemuan1 - PHP Dasar
Pertemuan1 - PHP DasarPertemuan1 - PHP Dasar
Pertemuan1 - PHP Dasar
 
Pengantar Algoritma Pemrograman II
Pengantar Algoritma Pemrograman IIPengantar Algoritma Pemrograman II
Pengantar Algoritma Pemrograman II
 
PerlTeX
PerlTeXPerlTeX
PerlTeX
 
Part 24 Perintah Record with
Part 24 Perintah Record withPart 24 Perintah Record with
Part 24 Perintah Record with
 
Native Xml Tutorial
Native Xml TutorialNative Xml Tutorial
Native Xml Tutorial
 
PLPG-Alpro-HE.pptx
PLPG-Alpro-HE.pptxPLPG-Alpro-HE.pptx
PLPG-Alpro-HE.pptx
 
Modul praktikum algoritma
Modul praktikum algoritmaModul praktikum algoritma
Modul praktikum algoritma
 
Ayo membuat program pascal
Ayo membuat program pascalAyo membuat program pascal
Ayo membuat program pascal
 
Pertemuan 9
Pertemuan 9Pertemuan 9
Pertemuan 9
 
Hitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERY
Hitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERYHitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERY
Hitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERY
 
Tutorial web programing x rpl 1
Tutorial web programing x rpl 1Tutorial web programing x rpl 1
Tutorial web programing x rpl 1
 
265991658-Pengantar-PHP-ppt.ppt
265991658-Pengantar-PHP-ppt.ppt265991658-Pengantar-PHP-ppt.ppt
265991658-Pengantar-PHP-ppt.ppt
 
Membuat laporan pdf berbasis web dengan php 5.0
Membuat laporan pdf berbasis web dengan php 5.0Membuat laporan pdf berbasis web dengan php 5.0
Membuat laporan pdf berbasis web dengan php 5.0
 
Pertemuan 8
Pertemuan 8Pertemuan 8
Pertemuan 8
 
Bab 1 Asas Pengaturcaraan (MALAYSIA) G-Vecom
Bab 1 Asas Pengaturcaraan (MALAYSIA) G-VecomBab 1 Asas Pengaturcaraan (MALAYSIA) G-Vecom
Bab 1 Asas Pengaturcaraan (MALAYSIA) G-Vecom
 
Belajar Java dasar
Belajar Java dasarBelajar Java dasar
Belajar Java dasar
 
about array
about arrayabout array
about array
 
07.-Desain-Pemrograman-Web-PHP-Dasar.pdf
07.-Desain-Pemrograman-Web-PHP-Dasar.pdf07.-Desain-Pemrograman-Web-PHP-Dasar.pdf
07.-Desain-Pemrograman-Web-PHP-Dasar.pdf
 

Plus de S N M P Simamora

Algoritma dan Pemrograman-I_konsep_statement
Algoritma dan Pemrograman-I_konsep_statementAlgoritma dan Pemrograman-I_konsep_statement
Algoritma dan Pemrograman-I_konsep_statementS N M P Simamora
 
konsep mnemonic-instruction
konsep mnemonic-instructionkonsep mnemonic-instruction
konsep mnemonic-instructionS N M P Simamora
 
Organisasi Komputer bhn kuliah m10 r1
Organisasi Komputer bhn kuliah m10 r1Organisasi Komputer bhn kuliah m10 r1
Organisasi Komputer bhn kuliah m10 r1S N M P Simamora
 
sns_paper complement_r010110
sns_paper complement_r010110sns_paper complement_r010110
sns_paper complement_r010110S N M P Simamora
 
Cover paper Algoritma Symboolon
Cover paper Algoritma SymboolonCover paper Algoritma Symboolon
Cover paper Algoritma SymboolonS N M P Simamora
 
Silabus TIK-2303 Arsitektur & Organisasi Komputer
Silabus TIK-2303 Arsitektur & Organisasi KomputerSilabus TIK-2303 Arsitektur & Organisasi Komputer
Silabus TIK-2303 Arsitektur & Organisasi KomputerS N M P Simamora
 
Konsep Process dalam Sistem Komputer
Konsep Process dalam Sistem KomputerKonsep Process dalam Sistem Komputer
Konsep Process dalam Sistem KomputerS N M P Simamora
 
Silabus TIK-3601 Sistem Operasi
Silabus TIK-3601 Sistem OperasiSilabus TIK-3601 Sistem Operasi
Silabus TIK-3601 Sistem OperasiS N M P Simamora
 
Teknologi Wireless dan Karakteristiknya
Teknologi Wireless dan KarakteristiknyaTeknologi Wireless dan Karakteristiknya
Teknologi Wireless dan KarakteristiknyaS N M P Simamora
 
Model Eksponensial dan Logaritma
Model Eksponensial dan LogaritmaModel Eksponensial dan Logaritma
Model Eksponensial dan LogaritmaS N M P Simamora
 
Konsep dan Terapan Matriks
Konsep dan Terapan MatriksKonsep dan Terapan Matriks
Konsep dan Terapan MatriksS N M P Simamora
 
Telekomunikasi dan Teknologi Informasi
Telekomunikasi dan Teknologi InformasiTelekomunikasi dan Teknologi Informasi
Telekomunikasi dan Teknologi InformasiS N M P Simamora
 
Bahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptBahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptS N M P Simamora
 
Bahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptBahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptS N M P Simamora
 
UBB105 Pengantar Teknologi Informasi
UBB105 Pengantar Teknologi InformasiUBB105 Pengantar Teknologi Informasi
UBB105 Pengantar Teknologi InformasiS N M P Simamora
 

Plus de S N M P Simamora (20)

Power over-ethernet
Power over-ethernetPower over-ethernet
Power over-ethernet
 
Algoritma dan Pemrograman-I_konsep_statement
Algoritma dan Pemrograman-I_konsep_statementAlgoritma dan Pemrograman-I_konsep_statement
Algoritma dan Pemrograman-I_konsep_statement
 
konsep mnemonic-instruction
konsep mnemonic-instructionkonsep mnemonic-instruction
konsep mnemonic-instruction
 
Organisasi Komputer bhn kuliah m10 r1
Organisasi Komputer bhn kuliah m10 r1Organisasi Komputer bhn kuliah m10 r1
Organisasi Komputer bhn kuliah m10 r1
 
sns_paper complement_r010110
sns_paper complement_r010110sns_paper complement_r010110
sns_paper complement_r010110
 
Cover paper Algoritma Symboolon
Cover paper Algoritma SymboolonCover paper Algoritma Symboolon
Cover paper Algoritma Symboolon
 
Algoritma Symboolon
Algoritma SymboolonAlgoritma Symboolon
Algoritma Symboolon
 
Silabus TIK-2303 Arsitektur & Organisasi Komputer
Silabus TIK-2303 Arsitektur & Organisasi KomputerSilabus TIK-2303 Arsitektur & Organisasi Komputer
Silabus TIK-2303 Arsitektur & Organisasi Komputer
 
Wireless Sensor Network
Wireless Sensor NetworkWireless Sensor Network
Wireless Sensor Network
 
Konsep Process dalam Sistem Komputer
Konsep Process dalam Sistem KomputerKonsep Process dalam Sistem Komputer
Konsep Process dalam Sistem Komputer
 
ADICT 2012 Presentation
ADICT 2012 PresentationADICT 2012 Presentation
ADICT 2012 Presentation
 
Silabus TIK-3601 Sistem Operasi
Silabus TIK-3601 Sistem OperasiSilabus TIK-3601 Sistem Operasi
Silabus TIK-3601 Sistem Operasi
 
Teknologi Wireless dan Karakteristiknya
Teknologi Wireless dan KarakteristiknyaTeknologi Wireless dan Karakteristiknya
Teknologi Wireless dan Karakteristiknya
 
Model Eksponensial dan Logaritma
Model Eksponensial dan LogaritmaModel Eksponensial dan Logaritma
Model Eksponensial dan Logaritma
 
Formula Matematika
Formula MatematikaFormula Matematika
Formula Matematika
 
Konsep dan Terapan Matriks
Konsep dan Terapan MatriksKonsep dan Terapan Matriks
Konsep dan Terapan Matriks
 
Telekomunikasi dan Teknologi Informasi
Telekomunikasi dan Teknologi InformasiTelekomunikasi dan Teknologi Informasi
Telekomunikasi dan Teknologi Informasi
 
Bahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptBahasa Pemrograman dan Script
Bahasa Pemrograman dan Script
 
Bahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptBahasa Pemrograman dan Script
Bahasa Pemrograman dan Script
 
UBB105 Pengantar Teknologi Informasi
UBB105 Pengantar Teknologi InformasiUBB105 Pengantar Teknologi Informasi
UBB105 Pengantar Teknologi Informasi
 

PERL TUNTUNAN

  • 1. www.geocities.com/raja_pangalengge/PEd 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 Filessambar41perl 1
  • 2. www.geocities.com/raja_pangalengge/PEd 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: 2
  • 3. www.geocities.com/raja_pangalengge/PEd Script pertama Anda! Misalkan akan ditampilkan sebuah string:” Selamat Datang di kota Dolok Sanggul.” ke layar komputer. hallo.pl print quot;Selamat Datang di kota Dolok Sanggul.quot;; 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 quot;Selamat Datang di kota Dolok Sanggul.nquot;; print quot;Pesan dari Pangalengge Educations.quot;; 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. 3
  • 4. www.geocities.com/raja_pangalengge/PEd 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: a5 ; b -3 ;c 2 Sintaksnya sebagai berikut: ngitung.pl $a=5; $b=-3; $c=2; $hasil=($a*($c-$b))%$c; print quot;Hasil = quot;, $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: (a + b + c + d ÷ e ) M= 5 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. 4
  • 5. www.geocities.com/raja_pangalengge/PEd aljabar.pl $a=-8; $b=-2; $c=12; $d=6; $e=2; $m=($a+$b+$c+$d/$e) / 5; print quot;Hasil = quot;, $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=quot;/cgi-bin/bukutamu.plquot;> <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=quot;Okequot;></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(quot;Cquot;, hex($1))/eg; $value =~ s/<!--(.|n)*-->//g; 5
  • 6. www.geocities.com/raja_pangalengge/PEd # Convert HTML stuff as necessary. $value =~ s/<([^>]|n)*>//g; $FORM{$name} = $value; } &missing_name unless $FORM{'name'}; &missing_msg unless $FORM{'msg'}; open (FILE, quot;$bookfilequot;) || die quot;Can't open $bookfile: $!nquot;; @LINES=<FILE>; close(FILE); $SIZE=@LINES; open (FILE, quot;>$bookfilequot;) || die quot;Can't open $bookfile: $!nquot;; for ($i = 0; $i <= $SIZE; $i++) { $_=$LINES[$i]; if (/<!--top-->/) { print FILE quot;<!--top-->nquot;; print FILE quot;<b>$FORM{'msg'}</b><br>nquot;; print FILE quot;$FORM{'name'}quot;; if ($FORM{'email'}) { print FILE quot; &lt;<A HREF=quot;mailto:$FORM{'email'}quot;>quot;; print FILE quot;$FORM{'email'}</A>&gt;quot;; } print FILE quot;<HR>nquot;; } else { print FILE $_; } } close (FILE); print quot;<HTML><HEAD><TITLE>.:Selesai:.</TITLE></HEAD><BODY bgcolor=white>nquot;; print quot;<FONT SIZE=5 COLOR=#996633><B>Terima kasih Atas Kunjungannya</B></FONT>nquot;; print quot;<BR><BR>Data Anda berikut telah terseimpan di Buku Tamu kami::<HR>nquot;; print quot;<b>$FORM{'msg'}</b><br>nquot;; print quot;$FORM{'name'}quot;; if ($FORM{'email'}) { print quot; &lt;<A HREF=quot;mailto:$FORM{'email'}quot;>quot;; print quot;$FORM{'email'}</A>&gt;quot;; } print quot;<P><HR>nquot;; print quot;<A HREF=quot;/latihan/bukutamu.htmquot;>Isian Buku Tamu.</A>nquot;; print quot;</BODY></HTML>nquot;; 6
  • 7. www.geocities.com/raja_pangalengge/PEd exit; sub missing_name { print quot;<HTML><HEAD><TITLE>Missing Name</TITLE></HEAD><BODY>nquot;; print quot;<FONT SIZE=5 COLOR=#996633><B>Name field is blank...</B></FONT>nquot;; print quot;<BR><BR>Please repost the name section of the guestbook.<P>nquot;; print quot;Return to the <a href=quot;/samples/book.htmquot;>Guest Book</a>.nquot;; print quot;</BODY></HTML>nquot;; exit; } sub missing_msg { print quot;<HTML><HEAD><TITLE>Missing Comments</TITLE></HEAD>nquot;; print quot;<FONT SIZE=5 COLOR=#996633><B>Comment field is blank...</B></FONT>nquot;; print quot;<BR><BR>Please repost the comment section of the guestbook.<P>nquot;; print quot;Return to the <a href=quot;/samples/book.htmquot;>Guest Book</a>.nquot;; print quot;</BODY></HTML>nquot;; exit; } Untuk menjalankannya digunakan interpreter Sambar Server v4.1 dengan metode CGI, seperti ditunjukkan pada tampilan berikut ini: 7
  • 8. www.geocities.com/raja_pangalengge/PEd 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 quot;Baris ini dieksekusi oleh interpreterquot;; 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 8
  • 9. www.geocities.com/raja_pangalengge/PEd $Z=$a+$b; $a=-9; $b=7; print $a ,quot; + quot;, $b ,quot; = quot;, $Z; Operator Operator digunakan untuk mengerjakan isi operand berdasar jenis instruksi yang ditentukan pada badan program. Misalkan: z ← a+b 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 ,quot; + quot;, $b ,quot; = quot;, $Z; • Pengurangan Misalkan: Z ← a – b; kurangkan.pl $a=-9; $b=7; $Z=$a-$b; print $a ,quot; - quot;, $b ,quot; = quot;, $Z; • Perkalian Misalkan: Z ← a x b; kali.pl $a=-9; $b=7; $Z=$a*$b; print $a ,quot; x quot;, $b ,quot; = quot;, $Z; • Pembagian Misalkan: Z ← a ÷ b; bagikan.pl $a=-63; $b=7; $Z=$a/$b; print $a ,quot; / quot;, $b ,quot; = quot;, $Z; 9
  • 10. www.geocities.com/raja_pangalengge/PEd • 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 ,quot; % quot;, $b ,quot; = quot;, $Z; Bedakan dengan script berikut: bagisisa1.pl $a=69; $b=7; $Z=$a%$b; print $a ,quot; % quot;, $b ,quot; = quot;, $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 quot;Sin 30 = quot;, $sin30 ,quot;nquot;; print quot;Sin 90 = quot;, $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 quot;Cos 30 = quot;, $cos30 ,quot;nquot;; print quot;Cos 90 = quot;, $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); 10
  • 11. www.geocities.com/raja_pangalengge/PEd $cosinus45=cos($b); $tgt30=($sinus30)/($cosinus30); $tgt45=($sinus45)/($cosinus45); print quot;Tan 30 = quot;, $tgt30 ,quot;nquot;; print quot;Tan 45 = quot;, $tgt45; • Bilangan Acak acakkan.pl $acak=rand(); print quot;Bilangan yang muncul: quot;, $acak; • Nilai Absolut Misalkan: a = -0.45, maka nilai absolut(a) = 0.45 absolut.pl $a=-0.45; $Z=abs($a); print quot;Nilai absolut quot;, $a ,quot; = quot;, $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 quot;Isi variabel ini adalah karakter squot;; } if(($bil>=7 && $itu=='R')||$ini=='s') { print quot;Isi variabel bil adalah 7quot;; } OR, disimbolkan dengan ‘||’, menyatakan bahwa keluaran bernilai 1 (TRUE) jika dan hanya jika salah satu masukan bernilai 1 (TRUE). lOr.pl $ini=quot;Aquot;; $itu=quot;aquot;; $bil=7; if(($bil<=7 && $itu==quot;aquot;)||$ini==quot;aquot;) { print quot;Isi variabel itu adalah karakter aquot;; } if($bil>7 || $itu==quot;Aquot;) { print quot;nIsi variabel bil adalah 7quot;; } 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. 11
  • 12. www.geocities.com/raja_pangalengge/PEd 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 quot;Apakabar?quot;; } else { print quot;Mau ke mana?quot;; } 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 quot;Isi c = quot;, $c; • Operator Akar Pangkat 2 Misalkan: 4 = 2 akarpkt.pl $a=4; $hasil=sqrt($a); print quot;Akar quot;, $a ,quot; = quot;, $hasil; • Bilangan Natural (e = ) Misalkan mencari nilai eksponensial suatu bilangan: e2 = 7.39 eksponensial.pl $bil=2; print quot;Nilai e pangkat quot;, $bil ,quot; = quot;, exp($bil); e = 2.7183 ekspo.pl $bil=exp(1); print quot;Bilangan e = quot;, $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 quot;Log-Natural(quot;, $bil ,quot;) = quot;, $hasil; • Logaritma 10 (menggunakan bilangan dasar 10) 12
  • 13. www.geocities.com/raja_pangalengge/PEd 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: ln( x) log( x) = ln(10) 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! log b c ⇔ a c = b a log10.pl $bil=1000; $hasil=(log($bil))/(log(10)); print quot;ln(quot;, $bil ,quot;) = quot;, log($bil) ,quot;nquot;; print quot;Log(quot;, $bil ,quot;) = quot;, $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: Tabel Kebenaran Logika X-OR +B A B A 0 0 0 0 1 1 1 0 1 1 1 0 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 quot;Hasil = quot;, $hasil; 13
  • 14. www.geocities.com/raja_pangalengge/PEd 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 quot;Nilai: quot;, $hasil; Hasil = 4. Post-increment: masukkan isi $b, lalu tambahkan 1 ke isi $b postincre.php $b=3; $hasil=$b++; print quot;Nilai: quot;, $hasil; Hasil = 3. Pre-decrement: kurangkan isi $c dengan 1, hasilnya masukkan ke $c predecre.php $c=3; $hasil=--$c; print quot;Nilai: quot;, $hasil; Hasil = 2. Post-decrement: masukkan isi $d, lalu kurangkan isi $b dengan 1 postdecre.php $d=3; $hasil=$d--; print quot;Nilai: quot;, $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=quot;17quot;; $b=quot;2quot;; $hasil1=$b+$a; $hasil2=$a|$b; print quot;Isi variabel hasil1 = quot;, $hasil1; print quot;nIsi variabel hasil2 = quot;, $hasil2; 14
  • 15. www.geocities.com/raja_pangalengge/PEd Operator Penugasan (assignment digunakan untuk operator), 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 quot;Isi variabel a = quot;, $a; jika: $a-=b; maka $a=2 assignment2.pl $a=6; $b=4; $a-=$b; print quot;Isi variabel a = quot;, $a; jika: $a*=b; maka $a=24 assignment3.pl $a=6; $b=4; $a*=$b; print quot;Isi variabel a = quot;, $a; jika: $a/=b; maka $a=1.5 assignment4.pl $a=6; $b=4; $a/=$b; print quot;Isi variabel a = quot;, $a; jika: $a*=b; maka $a=2 assignment5.pl $a=6; $b=4; 15
  • 16. www.geocities.com/raja_pangalengge/PEd $a%=$b; print quot;Isi variabel a = quot;, $a; jika: $a&=b; maka $a=4 assignment6.pl $a=6; $b=4; $a&=$b; print quot;Isi variabel a = quot;, $a; jika: $a*=b; maka $a=6 assignment7.pl $a=6; $b=4; $a|=$b; print quot;Isi variabel a = quot;, $a; jika: $a⊕=b; maka $a=2 assignment8.pl $a=6; $b=4; $a^=$b; print quot;Isi variabel a = quot;, $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(quot;Hello CGIquot;), p(quot;Hello CGIquot;), 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=quot;contoh/oke.txtquot;; open (berkas) || die quot;Tidak dapat membuka filenquot;; 16
  • 17. www.geocities.com/raja_pangalengge/PEd print <berkas>; close (berkas); Tampilan jalannya script: Akhir baris dari isi file oke.txt diberikan ‘new-line’ (ditekan ENTER) 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 17
  • 18. www.geocities.com/raja_pangalengge/PEd 14 E 15 F 16 10 17 11 hex2dec.pl $a=23; print quot;0xquot;, $a ,quot; dalam desimal = quot;, 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 = (4x81)+(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 quot;0quot;, $b ,quot; dalam desimal = quot;, oct($b); Komputer senantiasa menampilkan dalam bilangan Desimal 18
  • 19. www.geocities.com/raja_pangalengge/PEd Mekanisme konversi suatu karakter ke bilangan Sintaks-nya: ord($kara); kar2num.pl $a1='A'; $a2='a'; print quot;Karakter quot;, $a1 ,quot; dikodekan DECquot;, ord($a1); print quot;nKarakter quot;, $a2 ,quot; dikodekan DECquot;, ord($a2); Mekanisme konversi suatu bilangan ke karakter Sintaks-nya: chr($bil); num2char.pl $a1=65; $a2=95; print quot;DEC quot;, $a1 ,quot; direpresentasikankan menjadi karakter quot;, chr($a1); print quot;nDEC quot;, $a2 ,quot; direpresentasikankan menjadi karakter quot;, chr($a2); Contoh: Menampilkan Tabel ASCII 8-bit dari DEC65 s.d DEC75. ascii6575.pl print quot;Tabel ASCIInquot;; print quot;==============nquot;; for($i=65;$i<=75;$i++) { print $i ,quot;tquot;, chr($i) ,quot;nquot;; } #’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. 19
  • 20. www.geocities.com/raja_pangalengge/PEd tanya.pl print quot;Berapa umur Anda?: quot;; $umur = <>; print quot;WOW! Umur Anda ternyata quot;, $umur ,quot; tahun!quot;; print quot;nSekarang sekolah di mana?: quot;; $sekolah=<stdin>; print quot;Anda sekolah di quot;, $sekolah ,quot; ya....quot;; 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 quot;Berapa umur Anda?: quot;; chomp($umur=<>); print quot;WOW! Umur Anda ternyata quot;, $umur ,quot; tahun!quot;; print quot;nSekarang sekolah di mana?: quot;; chomp($sekolah=<stdin>); print quot;Anda sekolah di quot;, $sekolah ,quot; ya....quot;; Tampilan jalannya script tanya1.pl: 20
  • 21. www.geocities.com/raja_pangalengge/PEd Contoh: Analog dengan script ascii6575.pl, namun batas bawah=65, dan batas atas=75 didapatkan dari user-input: asciit.pl print quot;Kode dimulai dari?: quot;; $bawah=<>; print quot;Kode diakhiri pada?: quot;; $atas=<>; print quot;nquot;; print quot;Tabel ASCIInquot;; print quot;==============nquot;; for($i=$bawah;$i<=$atas;$i++) { print $i ,quot;tquot;, chr($i) ,quot;nquot;; } 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 quot;Tentukan jari-jari lingkaran?(cm): quot;; chomp ($r = <>); $diameter = (2 * $r); $luas = (3.14 * ($r ** 2)); $K = ($diameter * 3.14); print quot;Jika sebuah lingkaran dengan jari-jari = quot;, $r ,quot;cm maka:nquot;; print quot;Diameter = quot;, $diameter ,quot;cmnquot;; print quot;Keliling = quot;, $K ,quot;cmnquot;; print quot;Luas = quot;, $luas ,quot;cm^2quot;; 21
  • 22. www.geocities.com/raja_pangalengge/PEd 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 quot;Isi variabel a di bawah nilai 5.quot;; } else { print quot;Isi variabel a di atas nilai 5.quot;; } Contoh: ifthenelse1.pl print quot;Masukkan bilangan 0 s.d 9: quot;; $a=<>; if($a<0||$a>9) { print quot;Maaf, di luar range!quot;; } else { print quot;Anda telah benar memasukkan bilangannya.nquot;; print quot;Terima kasih, dan semoga permohonan Anda selama ini terkabulkan...quot;; } Tampilan jalannya script ifthenelse1.pl: 22
  • 23. www.geocities.com/raja_pangalengge/PEd Do..while statement Bentuk Umum: Do { kerjakan statement ini; while( ) kondisi ini bernilai true } Contoh: dowhile.pl $a=5; do { $a-=1; print $a ,quot;nquot;; } 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 ,quot;nquot;; } For … i statement Bentuk Umum: for( ) kondisi ini bernilai true { kerjakan statement ini; } Contoh: fori.pl for($a=5;$a>0;--$a) { print $a ,quot;nquot;; } 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 23
  • 24. www.geocities.com/raja_pangalengge/PEd fori00.pl for($i=0;$i<3;$i++) { for($j=0;$j<3;$j++) { if($i+$j!=3) { print quot;i=quot;, $i ,quot;; j=quot;, $j ,quot;nquot;; } } } 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 ,quot;nquot;; } if($a=1) { print quot;Selesai...nquot;; } 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) 24
  • 25. www.geocities.com/raja_pangalengge/PEd Gambar Klasifikasi Utama Struktur Kontrol Program pada Bahasa Pemrograman Contoh: User harus memasukkan nilai=1 agar keluar dari proses looping (berulang). cobat.pl print quot;Jangan masukkan nilai selain bilangan 1: quot;; $bil=<>; if($bil!=1) { do { print quot;Ketikkan password: quot;; $bil=<>; } while($bil!=1); print quot;Terima kasih, ya...quot;; } else { print quot;Terima kasih, semoga permohonan Anda selama ini terkabulkan...quot;; } 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 25
  • 26. www.geocities.com/raja_pangalengge/PEd $a=5; $hasil=1; if($a==0||$a==1) { print $a ,quot;! = quot;, $hasil; } else { for($i=$a;$i>1;$i--) { $hasil*=$i; } print $a ,quot;! = quot;, $hasil; } Bila menggunakan metode user-input, bisa dituliskan sebagai berikut: 5faktorial.pl print quot;Mencari nilai faktorial bilangan (2 s.d 9)nquot;; print quot;Ketikkan bilangan?: quot;; chomp($a=<>); if($a<0||$a>9) { print quot;Maaf, di luar range...quot;; } else { $hasil=1; if($a==0||$a==1) { print $a ,quot;! = quot;, $hasil; } else { for($i=$a;$i>1;$i--) { $hasil*=$i; } print $a ,quot;! = quot;, $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 ,quot;! = quot;, $hasil; } else { for($i=0;$i<$a;$i++) { $hasil*=($a-$i); } print $a ,quot;! = quot;, $hasil; } 26
  • 27. www.geocities.com/raja_pangalengge/PEd Algoritma Bila menggunakan metode dengan menggunakan user-input Mangabing: 5faktorial1.pl print quot;Mencari nilai faktorial bilangan (2 s.d 9)nquot;; print quot;Ketikkan bilangan?: quot;; chomp($a=<>); if($a<0||$a>9) { print quot;Maaf, di luar range...quot;; } else { $hasil=1; if($a==0||$a==1) { print $a ,quot;! = quot;, $hasil; } else { for($i=0;$i<$a;$i++) { $hasil*=($a-$i); } print $a ,quot;! = quot;, $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 quot;Masukkan nilai >= 7: quot;; $tanya = <>; if($tanya<7) { print quot;Maaf, nilai harus >= 7.quot;; } else { print quot;Nilai yang Anda isikan benar.quot;; } Ekspresi quot;Maaf, nilai harus >= 7.quot;, akan bernilai true jika variabel tanya diisikan >= 7, sebaliknya jika variabel tanya diisikan <7, maka ekspresi bernilai false dan menampilkan quot;Nilai yang Anda isikan benar.quot;. Lebih jelasnya dapat terlihat pada contoh berikut: kas30.pl print quot;Operand-1 harus lebih besar dari Operand-2nquot;; print quot;Operand-1?: quot;; $op1=<>; print quot;Operand-2?: quot;; $op2=<>; if($op1>$op2) { print quot;Nilai : true.quot;; } else { print quot;Nilai : false.quot;; } 27
  • 28. www.geocities.com/raja_pangalengge/PEd 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 quot;string[quot;, $i ,quot;]: quot;, $string[$i]; print quot;nquot;; } 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 quot;string[quot;, $i ,quot;]: quot;, $string[$i]; print quot;nquot;; } 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 quot;Isi elemen-elemen larik huruf = quot;, @huruf ,quot;nquot;; print quot;Elemen dimulai dari indeks ke-0 = quot;, $huruf[0]; Tipe Data String: 1kata.pl @kata=(quot;7aquot;,quot;satoequot;,quot;[-5c]quot;,quot;Sabrinaquot;,quot;Hquot;,quot;Aaquot;); print quot;Isi elemen-elemen larik kata = quot;, @kata ,quot;nquot;; print quot;Elemen dimulai dari indeks ke-0, isi elemen ke-3 = quot;, $kata[2]; 28
  • 29. www.geocities.com/raja_pangalengge/PEd Tipe Data Numerik: 1bilangan.pl @bil=(7,56,-5,-11.2,90,0.6); print quot;Isi elemen-elemen larik bil = quot;, @bil ,quot;nquot;; print quot;Elemen dimulai dari indeks ke-0, isi elemen ke-4 = quot;, $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 quot;Kata yang akan dimanipulasi: quot;; for($i=0;$i<$N;$i++) { print $Kara[$i] , quot; quot;; } print quot;nquot;; print quot;Dimanipulasi dengan Algoritma Marbulang P7:quot;; print quot;nquot;; 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 quot;Panjang kata yang diinginkan?: quot;; $N=<>; @kata; for($i<0;$i<$N;$i++) { print quot;Karakter ke-quot;, $i+1 ,quot;: quot;; $kata[$i]=<>; } print quot;nquot;; print quot;Kata yang Anda ketikkan: nquot;; for($i=0;$i<$N;$i++) { print $kata[$i]; 29
  • 30. www.geocities.com/raja_pangalengge/PEd } print quot;Selesai...quot;; 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:  − 2 2 1 A2 x 3 =    3 − 1 5 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 quot;A[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j]; print quot;nquot;; } } Tampilan jalannya script matriks.pl: 30
  • 31. www.geocities.com/raja_pangalengge/PEd  − 2 2 1 − 10 10 5  Jika : A2 x 3 =  x 5 =   15 − 5 25  3 − 1 5   − 10 10 5  Maka hasil matriks yang baru: A2 x 3 =    15 − 5 25 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 quot;A[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j]; print quot;nquot;; } } print quot;nquot;; print quot;[[A] x 5, hasilnya = nquot;; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print quot;C[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j]*5; print quot;nquot;; } } print quot;Dituliskan secara lengkap:nquot;; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print quot;[quot;, $A[$i][$j]*5 ,quot;]quot;; } print quot;nquot;; } Tampilan jalannya script matrik.pl: 31
  • 32. www.geocities.com/raja_pangalengge/PEd 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 quot;A[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j]; print quot;nquot;; } } print quot;nquot;; print quot;[C]=[A] x 5, hasilnya = nquot;; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { $C=$A[$i][$j]*5; print quot;C[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $C; print quot;nquot;; } } 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 quot;A[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j]; print quot;nquot;; } } print quot;nquot;; print quot;[C]=[A] x 5, hasilnya = nquot;; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { $C=$A[$i][$j]*5; print quot;C[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $C; print quot;nquot;; } 32
  • 33. www.geocities.com/raja_pangalengge/PEd } print quot;Dituliskan secara lengkap:nquot;; for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print quot;[quot;, $C ,quot;]quot;; } print quot;nquot;; } Misalkan: A2x3 - B3X2, hasilnya disimpankan ke matriks baru, C, dengan ukuran baru 2x2; disebut matriks kembar.  − 2 2 1 A2 x 3 =    3 − 1 5 1 0 − 2 B2 x 3 =   3 − 3 1  (−2 − 1) (2 − 0) (1 − (−2)) − 3 2 3 C 2 x3 =  = (5 − 1)   0 2 4  (3 − 3) (−1 − (−3))   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 quot;Matriks A:nquot;; 33
  • 34. www.geocities.com/raja_pangalengge/PEd for($i=0;$i<2;$i++) { for($j=0;$j<3;$j++) { print quot;A[quot;, $i+1 ,quot;][quot;, $j+1 ,quot;]=quot;, $A[$i][$j]; print quot;nquot;; } } print quot;nMatriks B:nquot;; for($j=0;$j<2;$j++) { for($k=0;$k<3;$k++) { print quot;B[quot;, $j+1 ,quot;][quot;, $k+1 ,quot;]=quot;, $B[$j][$k]; print quot;nquot;; } } print quot;nquot;; print quot;[A] - [B], hasilnya: nquot;; for($i=0;$i<2;$i++) { for($k=0;$k<3;$k++) { print quot;C[quot;, $i+1 ,quot;][quot;, $k+1 ,quot;]=quot;, $A[$i][$k]-$B[$i][$k]; print quot;nquot;; } } 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 quot;Larik data awal:nquot;; for($i=0;$i<8;$i++) { print $data[$i] ,quot; quot;; } for($i=0;$i<8;$i++) { 34
  • 35. www.geocities.com/raja_pangalengge/PEd 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 quot;nSetelah diurutkan dari kecil ke besar:nquot;; for($i=0;$i<8;$i++) { print $data[$i] ,quot; quot;; } Tampilan jalannya script min2maks.pl: Contoh lain: min2max.pl @urut=(900,76,-5,45,-666,3); print quot;Diurutkan dari terkecil ke terbesar: quot;; 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] ,quot; quot;; } Contoh: Sejumlah data dengan panjang 7, ber-tipe numerik, dimasukkan oleh user secara acak; selanjutnya akan diurutkan dari terbesar sampai dengan terkecil. Misalkan: 35
  • 36. www.geocities.com/raja_pangalengge/PEd Numerik=(-11,22,-3,94,25,36,17); Diurutkan menjadi: Numerik=( 94,36,25,22,17,-3,-11); maks2min.pl @Numerik; print quot;Masukkan data maks. 7, sbb:nquot;; for($i=0;$i<7;$i++) { print quot;Data ke-quot;, $i+1 ,quot;: quot;; chomp($Numerik[$i]=<>); } print quot;nquot;; print quot;Data yang Anda masukkan: quot;; for($i=0;$i<7;$i++) { print $Numerik[$i] ,quot; quot;; } print quot;nquot;; print quot;Diurutkan menjadi: quot;; 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] ,quot; quot;; } Blok pada script maks2min.pl ini: ... for($i=0;$i<7;$i++) { print $Numerik[$i] ,quot; quot;; } dapat digantikan seperti pada script berikut ini: max2min1.pl @urut; print quot;Pemasukan data sebanyak 7 kalinquot;; for($i=0;$i<7;$i++) { print quot;Data ke-quot;, $i+1 ,quot;: quot;; chomp($urut[$i]=<>); } print quot;nquot;; print quot;Diurutkan dari terbesar ke terkecil: quot;; 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 quot;@urutquot;; 36
  • 37. www.geocities.com/raja_pangalengge/PEd 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 quot;@larikquot;; 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,quot;L$iniquot;); } @coba = sort(@coba); print quot;@cobaquot;; Mengubah bentuk string ke larik Contoh: 37
  • 38. www.geocities.com/raja_pangalengge/PEd kalimat=quot;Segera-saksikan-siaran langsung basket di stasiun Sagoeman TV.quot;; str2larik1.pl $kalimat=quot;Segera-saksikan-siaran langsung basket di stasiun Sagoeman TV.quot;; @larik = split('-',$kalimat); print quot;@larikquot;; Pada string yang diisikan ke variabel kalimat, yang dihilangkan antar kata agar diubah ke bentuk larik adalah karakter: ‘–’. Contoh: nama=quot;Tessi,Sentot Kho,Jaka Haryatno,Buchori,Zebulon,Renee,Indriquot;; str2larik.pl $nama=quot;Tessi,Sentot Kho,Jaka Haryatno,Buchori,Zebulon,Renee,Indriquot;; @larik = split(',',$nama); print quot;@larikquot;; 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=(quot;Segeraquot;,quot;saksikanquot;,quot;siaranquot;,quot;langsungquot;,quot;basketquot;,quot;diquot;,quot;stasiunquot;,quot;Sagoemanquot;,quot; TVquot;,quot;.quot;); larik2str.pl @larik=(quot;Segeraquot;,quot;saksikanquot;,quot;siaranquot;,quot;langsungquot;,quot;basketquot;,quot;diquot;,quot;stasiunquot;,quot;Sagoemanquot; ,quot;TVquot;,quot;.quot;); $kata = join(',',@larik); print quot;$kataquot;; 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=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;); $N=scalar(@Data); print quot;Larik Data: quot;; for($i=0;$i<$N;$i++) { print $Data[$i] ,quot; quot;; } print quot;nPanjang larik Data = quot;, $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”); 38
  • 39. www.geocities.com/raja_pangalengge/PEd push1.pl @Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;); $N=scalar(@Data); print quot;Larik Data: quot;; for($i=0;$i<$N;$i++) { print $Data[$i] ,quot; quot;; } push(@Data, quot;Nahasonquot;); print quot;nLarik Data yang baru: quot;, quot;@Dataquot;; Baris kode ini: print quot;nLarik Data yang baru: quot;, quot;@Dataquot;; dapat juga dituliskan begini: print quot;nLarik Data yang baru: @Dataquot;; Menambah sekaligus dua elemen baru: push2.pl @Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;); $N=scalar(@Data); print quot;Larik Data: quot;; for($i=0;$i<$N;$i++) { print $Data[$i] ,quot; quot;; } push(@Data, quot;Nahasonquot;,quot;Moniqequot;); print quot;nLarik Data yang baru: quot;, quot;@Dataquot;; Menambah elemen baru di awal elemen larik: shift1.pl @Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;); $N=scalar(@Data); print quot;Larik Data: quot;; for($i=0;$i<$N;$i++) { print $Data[$i] ,quot; quot;; } unshift(@Data, quot;Sentotquot;); print quot;nLarik Data yang baru: quot;, quot;@Dataquot;; Menambah sekaligus dua elemen baru di awal elemen larik: shift2.pl @Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;); $N=scalar(@Data); print quot;Larik Data: quot;; for($i=0;$i<$N;$i++) { print $Data[$i] ,quot; quot;; } unshift(@Data, quot;Sentotquot;,quot;Latiefquot;); print quot;nLarik Data yang baru: quot;, quot;@Dataquot;; Menampilkan isi larik Data dapat juga digunakan script berikut: @Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;); $A=quot;@Dataquot;; print quot;nquot;, $A; Mengetahui panjang larik Data dapat juga digunakan script berikut: @Data=(quot;Mulyaniquot;,quot;Boedyottoquot;,quot;Rahmaquot;,quot;Tinaquot;); 39
  • 40. www.geocities.com/raja_pangalengge/PEd $aa=@Data; print quot;nquot;, $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=(quot;Moniqequot;,quot;Luequot;,quot;Rosequot;,quot;Tinaquot;,quot;Nahasonquot;,quot;Mulyaniquot;); $N=scalar(@siswa); print quot;Larik siswa: quot;; for($i=0;$i<$N;$i++) { print $siswa[$i] ,quot; quot;; } pop(@siswa); print quot;nLarik siswa yang baru: quot;, quot;@siswaquot;; Menghapus sekaligus dua elemen di akhir larik: pop2.pl @siswa=(quot;Moniqequot;,quot;Luequot;,quot;Rosequot;,quot;Tinaquot;,quot;Nahasonquot;,quot;Mulyaniquot;); $N=scalar(@siswa); print quot;Larik siswa: quot;; for($i=0;$i<$N;$i++) { print $siswa[$i] ,quot; quot;; } pop(@siswa); print quot;nLarik siswa yang baru: quot;, quot;@siswaquot;; pop(@siswa); print quot;nLarik siswa yang baru lagi: quot;, quot;@siswaquot;; Menghapus elemen di awal larik: shift1.pl @siswa=(quot;Moniqequot;,quot;Luequot;,quot;Rosequot;,quot;Tinaquot;,quot;Nahasonquot;,quot;Mulyaniquot;); $N=scalar(@siswa); print quot;Larik siswa: quot;; for($i=0;$i<$N;$i++) { print $siswa[$i] ,quot; quot;; } shift(@siswa); print quot;nLarik siswa yang baru: quot;, quot;@siswaquot;; Menghapus sekaligus dua elemen di awal larik: shift2.pl @siswa=(quot;Moniqequot;,quot;Luequot;,quot;Rosequot;,quot;Tinaquot;,quot;Nahasonquot;,quot;Mulyaniquot;); $N=scalar(@siswa); print quot;Larik siswa: quot;; for($i=0;$i<$N;$i++) { print $siswa[$i] ,quot; quot;; } shift(@siswa); print quot;nLarik siswa yang baru: quot;, quot;@siswaquot;; shift(@siswa); print quot;nLarik siswa yang baru lagi: quot;, quot;@siswaquot;; 40
  • 41. www.geocities.com/raja_pangalengge/PEd 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 quot;Pemasukan bilangan sebanyak 7 kalinquot;; for($i=0;$i<7;$i++) { print quot;Data[quot;, $i+1 ,quot;]: quot;; chomp($bil[$i]=<>); } $tot=0; for($i=0;$i<7;$i++) { $tot+=$bil[$i]; } $mean=$tot/7; print quot;Rata-rata = quot;, $mean; print quot;nquot;; print quot;Data diurutkan dari kecil ke besar: quot;; 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 quot;@bilquot;; $hasil=0; for($j=0;$j<7;$j++) { if($bil[$j]==$bil[$j+1]) { $hasil+=1; } } print quot;nModus sebanyak quot;, $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). 41
  • 42. www.geocities.com/raja_pangalengge/PEd 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 quot;Pemasukan bilangan sebanyak 7 kalinquot;; for($i=0;$i<7;$i++) { print quot;Data[quot;, $i+1 ,quot;]: quot;; chomp($bil[$i]=<>); } $tot=0; for($i=0;$i<7;$i++) { $tot+=$bil[$i]; } $mean=$tot/7; print quot;Rata-rata = quot;, $mean; print quot;nquot;; print quot;Data diurutkan dari kecil ke besar: quot;; 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 quot;@bilquot;; $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; } 42
  • 43. www.geocities.com/raja_pangalengge/PEd } } print quot;nModus=quot;, $x ,quot; sebanyak quot;, $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 quot;Tabel Perkalian dari 1 s.d 10:nquot;; for($i=1;$i<=10;$i++) { for($j=1;$j<=10;$j++) { print $i ,quot;*quot;, $j ,quot;=quot;, $i*$j; print quot;tquot;; } print quot;nquot;; } Tampilan jalannya script kali110.pl: 43
  • 44. www.geocities.com/raja_pangalengge/PEd 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 quot;x = quot;, $x , quot;nquot;; $hasil=itung($x); sub itung { $y=3*$x+5; print quot;Hasil = quot;, $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 quot;Oke, semoga sukses...quot;; exit; } sub tampilkan1() { print quot;Selamat Datang di kota Bandung.quot;; exit; } Contoh: Menampilkan nilai f(x)=3x+5 untuk rentang x=1 s.d x=7. fungsi2.pl print quot;xt3x+5nquot;; 44
  • 45. www.geocities.com/raja_pangalengge/PEd print quot;=============nquot;; for($x=1;$x<=7;$x++) { print $x ,quot;tquot;, itung($x), quot;nquot;; } sub itung { $y=3*$x+5; } Analog pada script fungsi2.pl, namun menggunakan metode user-input: 1fungsi12.pl print quot;Batas Bawah: quot;; chomp($bawah=<>); print quot;Batas Atas: quot;; chomp($atas=<>); print quot;xt3x+5nquot;; print quot;=============nquot;; for($x=$bawah;$x<=$atas;$x++) { print $x ,quot;tquot;, itung($x), quot;nquot;; } 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 quot;Batas Bawah: quot;; chomp($bawah=<>); print quot;Batas Atas: quot;; chomp($atas=<>); print quot;xtyt3x+5ynquot;; print quot;=========================nquot;; for($x=$bawah;$x<=$atas;$x++) { $y=$x; print $x ,quot;tquot;, $y ,quot;tquot;, itung($x,$y), quot;nquot;; } sub itung { $z=3*$x+5*$y; } Contoh: 45