Pemograman Perl

Dari IgosCenter

Langsung ke: Navigasi, Cari

Perl berarti Practical Extraction and Report Language. Bahasa ini dikembangkan oleh Larry Wall pada mesin *NIX. Versi pertama Perl, Perl 1, dirilis pada tanggal 18 Desember 1987. Versi-versi setelahnya tersedia pula bagi berbagai system operasi varian Unix, termasuk Linux.

Perbedaan antara “Perl” dan “perl”

Larry menegaskan, bahwa bahasa pemograman yang diciptakannya bernama Perl (dengan P besar). Sedangkan perl (dengan p kecil) adalah nama program interpreter yang menjalankan kode sumbernya.

Daftar isi

Membuat Program

Script

Sama halnya dengan Bash, baris komentar ditandai dengan tanda #, kecuali header dari pemograman Perl itu sendiri. Selain itu, setiap akhir suatu statement ditandai dengan titik-koma (;), percis seperti C/C++.

Membuat Script

Untuk membuat script Perl kita hanya memerlukan terminal dan sebuah editor teks, semisal gedit, Vi atau nano.

root@nan:~/perl/ nano hello.pl

Contoh Script

Ini script pamungkas; script pertama semua bahasa pemograman: Hello World

#!/usr/bin/perl/
#ini program Perl pertama gue nih
print  “Hello, World\n”
print “This is Perl… ;) \n”


Menjalankan Script

Setelah disimpan, file harus diubah modenya menjadi executable sebelum dijalankan.

$ chmod +x hello.pl

baru dijalankan

$ ./hello.pl

Pemograman Dasar

Output

Lihat sekilas program hello diatas, Anda pasti sudah langsung tahu kalau perintah untuk menampilkan sesuatu di layar dalam Perl adalah 'print'. Sebagai tambahan, perintah print di Perl lain dengan echo pada Bash. Jika Anda lupa menyertakan tanda \n, perintah print yang akan dijalankan berikutnya tetap di baris yang itu-itu juga.

Tipe Data

Perl hanya memiliki 2 tipe data: Scalar dan Array.

Scalar

Tipe data Scalar meliputi string dan angka. Untuk variabel bertipe scalar, harus ditandai dengan tanda $ di depannya. Dan untuk penulisannya, variabel harus diawali dan diikuti setidaknya oleh satu huruf, tidak boleh berisi tanda minus, dan tidak bisa diawali dengan tanda underscore. Coba script ini:

#!/usr/bin/perl
 
$nama = "Perl";
$peringkat = 1;
 
print "Halo, nama saya $nama dan saya ada di peringkat ke $peringkat\n";

Array

Array merupakan kumpulan atau himpunan dari scalar-scalar. Karena tipe data scalar termasuk angka dan string, tidak seperti C atau kebanyakan bahasa lain dimana array harus berisi variabel yang sama jenisnya, array dalam Perl dapat memiliki angka maupun string. Array dalam Perl harus ditandai dengan tanda '@'. Ini syntaxnya:

@nama_array = (index1, index2, ….... indexN)

Ini contohnya:

@Kemungkinan = (0, “Benar”, 12, 1, “Salah”)

Input

Untuk menerima dan memproses masukan dari pengguna, perintahnya STDIN.

#!/usr/bin/perl
 
print “Masukkan nama Anda:;
$nama = <STDIN>;
print “Halo $nama.... salam kenal, saya Perl”

Berkas:Perl_input1.png Berkas:Perl_input2.png

Ada baris kosong? Yap, kelanjutan kalimat setelah variabel di-new line-kan. Untuk mengatasinya, pakai 'chop'.

chop ($nama = <STDIN>)

Operator

String

Coba script ini:

#definisikan variabel-variabelnya 
$warna1 = "Merah"; 
$warna2 = "Jingga"; 
$warna3 = "Kuning"; 
$warna4 = "Hijau"; 
$warna5 = "Biru"; 
$warna6 = "Nila"; 
$warna7 = "Ungu"; 
 
# gabungkan variabel string diatas. Dengan satu atau dua tanda petik? 
$pelangi1 = '$warna1 $warna2 $warna3 $warna4 $warna5 $warna6 $warna7'; 
$pelangi2 = "$warna1 $warna2 $warna3 $warna4 $warna5 $warna6 $warna7"; 
 
print $pelangi1, "\n"; 
print $pelangi2, "\n";

Berkas:Perl_operatorstring.png Berkas:Perl_operatorstring2.png

Aritmatik

Ini operator untuk tipe data scalar. Tanda untuk yang numerik standar.

#!/usr/bin/perl 
 
$x = 2; 
$y = 3; 
print "x = 2, y = 3 \n"; 
 
#ini cara tulis-langsung-saja 
print "x + y = ", $x + $y, "\n"; 
print "x - y = ", $x - $y, "\n"; 
 
#ini dengan memakai variabel yang didefinisikan dulu nilainya 
$a = $x * $y; 
$b = $x ** $y; 
print "x * y = ", $a, "\n"; 
print "x^y = $b\n";

Perl juga mengenal apa yang disebut dalam bahasa C plus plus sebagai “assingment operator”, juga increment dan decrement.

NilaiModulus = NilaiModulus + 2 bisa disingkat penulisannya dengan NilaiModulus += 2

j = j + 1 → j += 1 n = n * 5 → n *= 5 y = y / 2 → y /= 2

Increment (++), menambah nilai suatu variabel dengan 1. Decrement (--), mengurangi nilai suatu variabel dengan 1.

Logika

Standar juga. Hanya saja, cara penulisan operator logika numerik berbeda dengan yang string.

Berkas:Perl_operatorlogic.png

Pencabangan

Pencabangan, atau branch, digunakan untuk menentukan nilai benar-salahnya suatu kondisi dan menentukan perintah-perintah apa yang harus dilakukan. Jika kondisi ini benar, apa yang harus dilakukan? Dan bagaimana kalau salah?

If

The single-alternative statement. Perintah dibawahnya (maksudnya dalam kurung kurawal dan akhir) akan dikerjakan jika kondisinya benar.

#!/usr/bin/perl 
 
print "Enter a non-zero number: "; 
chop($number = <STDIN>); 
 
if ($number != 0) { 
   print "The reciprocal of $number is ", 1/$number, "\n"; 
}

Simpel, bukan? …

...tapi dengan begini, kita tidak bisa membuat perintah tersendiri jika kondisinya salah. Sebagai solusi, else

If-else

Nah, yang ini disebut dual-alternative statement ← sok ngInggris.

Langsung contohnya sajalah...

#!/usr/bin/perl 
 
print "Enter password: "; 
chop($psswd = <STDIN>); 
 
if ($psswd eq "Ubuntu") { 
   print "Password correct!\n"; 
} 
else { 
   print "Password mismatch.\n"; 
}

perhatikan bahwa operator logika 'sama dengan' untuk string adalah “eq”.

if-elsif-else

dan untuk yang multi-alternative, if-elsif-else, general syntax-nya seperti ini..

if (condition1) {
  statement;
}
elsif (condition2) {
  statement;
}
..elsif (conditionN){
   statement;
}
else 
  statement;

unless-else

Ini adalah negasi alias kebalikan dari if-else. Perlu waktu juga untuk terbiasa dengan yang ini. Perintah-perintahnya akan dijalankan jika bernilai salah.

Sebagai contoh, pakai cerita saja ya. Ada sebuah program untuk memberitahukan apakah cuaca cukup cerah untuk pergi memancing. Katakanlah, program sederhana ini nanti diterapkan pada sebuah robot yang akan menerima berita langsung dari stasiun pemantauan cahaya. Setiap saat, dia akan mengatakan kalau cuaca baik untuk pergi memancing, kecuali kalau hujan.

#!/usr/bin/perl 
 
$cuaca = "Cerah"; 
 
unless ($cuaca eq "Hujan"){ 
   print "Cuaca cukup baik untuk memancing =D\n"; 
} 
else 
{ 
  print  "Cuaca tidak cukup baik untuk pergi memancing\n"; 
}

Looping

While

Pengulangan dengan perintah while akan menyebabkan statement-statement yang ada dikerjakan terus-menerus sampai kondisinya salah.

Ada tiga cara penulisannya, mencakup while, do-while, dan inline-while.

Ini syntax dari 'while':

while (kondisi)
{ 
	statement;
}

Dan ini skrip untuk mencari faktorial dari sebuah angka dengan menggunakan while

#!/usr/bin/perl 
 
print "Masukkan sebuah angka: "; 
chop ($angka = <STDIN>); 
 
$multiplier = $angka; 
$hasil = 1; 
 
while ($multiplier >= 1) { 
   $hasil *= $multiplier; 
   $multiplier -= 1; 
} 
 
print "Faktorial dari $angka adalah $hasil\n";

Berkas:Perl_while1.png Berkas:Perl_while2.png

Perhatikan. Variabel $multiplier diberi nilai yang sama dengan angka yang diinputkan terlebih dahulu. Variabel $hasil yang menampung nilai faktorial angka terus-menerus dikalikan dengan variabel $multiplier dalam looping, dengan variabel $multiplier dikurangi satu nilainya setiap loop. Perulangannya berhenti ketika variabel multiplier bernilai 0.

do-while

Ini syntax untuk do-while:

do 
{
   	statement;
} 
while (kondisi)

Dan ini contoh programnya:

#!/usr/bin/perl 
 
do { 
    print "Masukkan nama Anda: "; 
    chop ($nama = <STDIN>); 
    print "Hello, $nama ... Perl is here ;) \n\n"; 
 
    print "Mau coba lagi? [y/n]: "; 
    chop ($char = <STDIN>); 
 
} while ($char eq "y")

inline-while

Syntax-nya:

statement while kondisi

Sangat singkat. Habis, cuma satu baris. Pemakaiannya tak seluas yang lain karena keterbatasan statement yang bisa dimasukkan.

Until

Loop jenis ini juga mempunyai 3 cara penulisan. Dalam bahasa indonesia, until bisa diartikan dengan “sampai”. Nah, statement-statement yang ada akan terus dikerjakan sampai kondisinya bernilai benar.

Syntax untuk until:

until (kondisi)
{
	statement;
}

Dan coba dulu script ini:

#!/usr/bin/perl 
 
$x == 0; 
 
until ($ulang == 5) 
{ 
    $ulang ++; 
    $x += 2; 
    print "Perulangan ke $ulang.\n"; 
    print "Nilai x sekarang $x.\n\n"; 
}

Pada setiap perulangan, nilai x ditambah dua lalu ditampilkan. Yang menunjukkan perulangan sudah sampai perulangan ke berapa adalah variabel $ulang yang ditambah satu nilainya tiap loop.

do-until

Syntax untuk do-until:

do
{
	statement;
} until (kondisi)

Ini dia contoh programnya, sedikit panjang, untuk main tebak-tebakan.

#!/usr/bin/perl 
 
$hiddenWord = "Linus"; 
$kesempatan = 10; 
 
print "Guess the hidden word!\n"; 
print “Hint: “Orang keren”\n”;
print "Anda punya 10 kesempatan.\n"; 
 
do { 
    print "Masukkan tebakkan anda: "; 
    chop ($guess = <STDIN>); 
 
    if ($guess eq $hiddenWord){ 
    print "Selamat! Jawaban Anda benar!\n"; 
    exit; 
    } 
 
    else { 
    $kesempatan -= 1; 
    print "Jawaban anda salah.\n"; 
 
    } 
    print "Anda punya $kesempatan kesempatan lagi.\n\n"; 
 
} until ($kesempatan == 0)

inline-until

Ini bentuk penulisan until ketiga, dan seperti ini syntax-nya:

Statement while kondisi

For

Sistem perulangan for berbeda dengan while atau until. Dan for untuk Perl persis benar dengan C/C++, terutama penulisan parameternya.

for ($variabel = nilai_awal;kondisi; increment/decrement)
{
	statement;
}

Kalimat-kalimat yang berada di dalam kurung itu adalah parameter, jumlahnya tiga dengan tanda semicolon membatasi tiap parameternya.

Parameter pertama adalah pendeklarasian awal nilai varabel. Parameter kedua menunjukkan kondisi perulangan, sedangkan yang ketiga adalah increment, dan bisa juga digunakan decrement.

Coba skrip ini dan perhatikan cara kerjanya:

#!/usr/bin/perl 
 
for ($x = 1; $x <= 10; $x ++) 
{ 
    print "Ini loop ke $x \n"; 
}

Foreach

Foreach adalah perintah perulangan dengan jumlah elemen dalam suatu array. Perulangan dilakukan sebanyak jumlah elemen dalam array.

foreach $variabel(array)

Cara kerjanya malah sedikit mirip dengan for dalam Bash.

#!/usr/bin/perl 
 
@nama = ("Linus", "Larry", "Richard"); 
 
foreach $ulang (@nama) { 
    print "$ulang\n"; 
}

Subrutine


Kontributor: Nan

(c) Igos Center Bandung, 2009