Arsip mwmag[Files]  [Up]© 2002 PT Masterweb Media

Berkenalan dengan Perl

Perl Selayang Pandang

Membuat Program CGI

Daftar gambar

  1. Hasil program CGI di browser
Berkenalan dengan Perl

Hasanuddin Tamir

Bagian: 1—Pengenalan Perl dan CGI

Tingkat: Dasar

Tujuan: Setelah membaca tutorial ini, pembaca diharapkan mengetahui secara garis besar tentang elemen-elemen dasar Perl dan dapat membuat program CGI sederhana.

Abstrak: Apa itu Perl, bagaimana cara menjalankan skrip Perl, elemen-elemen dasar bahasa Perl (variabel, fungsi, operator, definisi, pernyataan, ekspresi dan kontrol), CGI, menulis program CGI sederhana.

Prasyarat: mampu memahami logika dan algoritma, tidak wajib punya pengalaman dengan bahasa lain, tapi akan sangat membantu bila pembaca mengenal C dan shell. Mengerti HTML.

print <<TUTORIAL;
Selamat datang di dunia Perl.

Ini adalah seri pertama dari rangkaian
tutorial Perl. Rangkaian tutorial ini
akan mengenalkan Perl secara umum, dan
khususnya, mengenalkan penggunaan Perl
dalam pemrograman Web.
TUTORIAL

Saya menyusun tutorial ini dan mencoba kode program dengan menggunakan Perl versi 5.6 di sistem Linux (sebuah varian Unix). Beberapa perintah dan ketentuan mungkin tidak relevan bagi sistem lain, namun beberapa di antaranya mudah dicari padanan yang sesuai. Perl sendiri tersedia untuk berbagai sistem operasi, jadi tutorial ini bukan hanya untuk sistem Linux. Perbedaan yang signifikan akan saya sebutkan secara eksplisit dan disertai alternatif untuk sistem lain, atau paling tidak, petunjuk untuk informasi lebih lanjut.

Semua kode dan materi masih relevan dengan versi Perl yang sudah lama. Tapi, saya tidak menjamin kondisinya tetap sama untuk versi yang lebih tua dari 5.004 (dirilis Mei 1997). Untuk menjalankan program yang dijalankan melalui Web (kita kenal dengan program CGI), saya menggunakan webserver Apache 1.3.19. Saya mengasumsikan bahwa Anda sudah mengerti bagaimana melakukan konfigurasi di Apache, atau webserver apapun. Anda bisa memperoleh informasi mengenai penggunaan Perl dan webserver untuk berbagai sistem di situs Perl, www.perl.com. Di sana Anda juga bisa mencari informasi tentang instalasi Perl untuk semua sistem.

Kadang-kadang saya akan menunjukkan beberapa perintah yang harus dilakukan dari shell atau command line. Di Linux, umumnya digunakan program /bin/bash, dan di Windows, yang digunakan adalah COMMAND.COM atau CMD.EXE melalui prompt DOS. Untuk melambangkan shell ketika menjalankan perintah, saya menggunakan “” sebagai tanda prompt. Masukan yang harus Anda ketikkan akan dicetak dalam huruf tebal miring. Misalnya,

$ perl

Hal lain yang saya asumsikan adalah Anda mengerti HTML (HyperText Markup Language) dan bisa membuat dokumen HTML. Dengan sendirinya saya juga merasa tidak perlu menjelaskan lagi mengenai HTTP (HyperText Transfer Protocol) dan URL/URI (Universal Resource Locator/Universal Resource Identifier).

Terakhir, yang harus Anda siapkan sebelum kita benar-benar mulai tutorial ini, adalah santai. Jangan terburu-buru. Kalau ada bagian yang kurang jelas, baca sekali lagi. Kalau perlu, selingi dengan jalan-jalan, tidak perlu sampai ke mal. Dan sebaiknya Anda sedang tidak jauh-jauh dari komputer, banyak yang harus dipraktikkan di sini. Perl dibuat untuk mempermudah pekerjaan, kenapa mempelajarinya dengan jalan yang susah?

Perl Selayang Pandang

Perl merupakan bahasa pemrograman dengan kemampuan utama untuk melakukan berbagai jenis pemrosesan teks. Dengan dasar kemampuan tersebut, Perl makin berkembang untuk dapat melakukan berbagai macam proses menyangkut manipulasi data teks dan biner sejak dibuat pertama kali oleh Larry Wall pada tahun 1987. Proses yang bisa dilakukan beragam, dari file teks biasa sampai DBM. Dari pengelolaan data di RDBMS sampai pemrosesan informasi yang disebar melalui jaringan. Dari manipulasi grafis, audio (MP3) dan video sampai pembuatan panel kontrol untuk home automation. Dan konon katanya, Perl itu singkatan dari “Practical Extraction and Reporting Language”. Tapi, jangan pernah menyebutnya “PERL”. Pembuatnya ingin bahasa ini dipanggil Perl.

Motto Perl adalah TMTOWTDI (there's more than one way to do it). Apapun yang Anda lakukan dengan Perl, tersedia lebih dari satu cara. Pertimbangan yang dimiliki seorang programer biasanya meliputi penulisan kode, efisiensi, kecepatan, dan kejelasan. Untuk menjalankan Perl sendiri tersedia beberapa cara. Namun untuk kepentingan tutorial ini, mungkin hanya satu atau dua cara saja yang saya tunjukkan. “Banyak cara” tidak selalu berarti “semua cocok” untuk “semua kondisi”.

Menjalankan Program Perl

Sebagai bahasa skrip, kode program Perl tidak perlu dikompilasi. Untuk menjalankan sebuah skrip Perl diperlukan program interpreter yang disebut perl (dengan p kecil). Program ini menerima opsi-opsi berupa tanda minus dan satu karakter tambahan, misalnya -w. Jadi, kita menyebutnya skrip atau program? Dalam konteks Perl, itu tidak penting. Sepanjang tutorial, saya akan menggunakan kedua terminologi tersebut.

Kita bisa mendefinisikan kode program Perl di shell dan menjalankannya pada saat itu juga. Untuk itu opsi -e digunakan. Program semacam ini disebut one-liner. Program di bawah ini akan mengubah nama file di sebuah direktori menjadi huruf kecil semua.

$ perl -e 'rename $_, lc foreach @ARGV' *

(Di Windows, gunakan *.* sebagai pengganti *, dan gunakan kutip ganda untuk menggantikan kutip tunggal).

Cara yang lebih umum tentu saja adalah dengan menuliskan kode program di dalam sebuah file lalu memanggil perl untuk menjalankan program tersebut. Gampang sekali. Ambil contoh kode pengantar tutorial. Misalkan kode itu saya masukkan ke dalam file bernama tutorial.pl, maka saya sudah punya sebuah file program Perl. Lalu,

$ perl tutorial.pl
Selamat datang di dunia Perl.
Ini adalah seri pertama dari rangkaian
tutorial Perl. Rangkaian tutorial ini
akan mengenalkan Perl secara umum, dan
khususnya, mengenalkan penggunaan Perl
dalam pemrograman Web.

Jika Anda menggunakan Linux, Anda bisa menggunakan shebang untuk mendefinisikan lokasi perl. Lokasi yang umum digunakan adalah /usr/bin/perl atau /usr/local/bin/perl. Shebang harus diletakkan sebagai baris pertama, dan bisa juga digunakan untuk mengirim opsi ke perl. Setelah menambahkan shebang, skrip tutorial.pl akan menjadi,

#!/usr/bin/perl –w
print <<TUTORIAL;
Selamat datang di dunia Perl.
Ini adalah seri pertama dari rangkaian
tutorial Perl. Rangkaian tutorial ini
akan mengenalkan Perl secara umum, dan
khususnya, mengenalkan penggunaan Perl
dalam pemrograman Web.
TUTORIAL

Untuk menjadikannya sebuah file program, tinggal mengubah permisi file supaya bisa dieksekusi. Kini program tersebut bisa dijalankan dengan,

$ ./tutorial.pl

Keluarannya tetap sama—itu yang diharapkan bukan?

Di Windows, shebang diabaikan namun tidak bermasalah. Lihat manual perlrun untuk alternatif shebang di berbagai sistem.

Penggunaan Variabel

Perl memiliki tiga tipe data: skalar, array, dan hash. Skalar menyimpan nilai tunggal, array menyimpan kumpulan skalar dengan urutan tertentu, sedangkan hash menyimpan kumpulan skalar berpasangan. Sebuah variabel dinyatakan dengan tanda awalan tertentu yang merujuk pada tipe data yang dikandungnya, serta nama yang berfungsi sebagai pengenal. Tanda pengenal adalah $ untuk skalar, @ untuk array, dan % untuk hash.

Nama variabel terdiri atas huruf dan angka, disebut juga alfanumerik (karakter “_” dihitung sebagai huruf). Nama variabel tidak boleh dimulai dengan angka. Tidak ada ketentuan mengikat mengenai berapa panjang nama variabel yang boleh digunakan. Anda bahkan bisa menggunakan semua nama yang Anda ingat dalam silsilah keluarga Anda, selama memenuhi ketentuan di atas.

Skalar. Variabel skalar menyimpan unit data yang paling mendasar. Apa yang dikandung skalar, itu jugalah yang bisa dikandung oleh array dan hash. Sebuah skalar hanya mengandung string atau angka. Ini juga berarti bahwa semua informasi—dari manapun asalnya—akan diperlakukan sebagai string atau angka. String dikutip menggunakan kutip ganda atau kutip tunggal. Angka bisa berupa bilangan bulat, oktal, heksadesimal, maupun pecahan desimal.

$nama = 'hasan';
$_nama2 = $nama . 't'; # hasant
$tahun = 2001;
$satu_dollar = 8500.43;
$dua_tahun_lalu = $tahun - 2; # 1999

Untuk memasukkan kutip tunggal dalam string yang dikutip tunggal digunakan \ (garis miring terbalik) di depannya. Begitupun untuk memasukkan kutip ganda dalam string yang dikutip ganda. Dan untuk memasukkan \ itu sendiri, tambahkan \ satu lagi. Ini disebut meng-escape character.

$putih = '#FFFFFF';
$body = "<body bgcolor=\"$putih\">";
$dialog = '"Dia t\'lah pergi," katanya';

Array. Array didefinisikan dengan memasukkan elemen-elemennya ke dalam tanda kurung dan dipisahkan dengan , (koma). Koma tidak wajib diletakkan pada elemen terakhir. Di Perl, ini sebenarnya sebuah konstruksi data yang disebut list.

@minuman = ('kopi', 'teh', 'air');

Kadang-kadang kedua istilah ini, array dan list, bisa dipertukarkan, dan memiliki makna yang sama. Namun, harus disadari bahwa keduanya tetap berbeda secara logik. Array adalah jenis variabel, sementara list adalah konstruksi data. Dalam pengertian singkat, bisa dikatakan bahwa array adalah list yang bernama. Semua array berisi list, tapi tidak semua list berupa array. Dengan pengertian ini kita bisa mendefinisikan sekumpulan variabel skalar dalam list.

($satu, $dua, $tiga) = (1, 2, 3);

Elemen array diakses dengan sintaks $array[0], angka di dalam “[]” menujukkan indeks elemen dimulai dari 0, yang berarti elemen pertama. Indeks negatif (dimulai dari -1) menghitung elemen dari belakang.

$minuman[0]      # berisi "kopi"
$minuman[2] # berisi "air"
$minuman[-1] # sama, berisi air

Jika kebetulan semua elemen array tidak ada yang mengandung spasi, maka kita bisa mendefinisikan sebuah array tanpa menggunakan tanda kutip dan koma. Sebagai gantinya kita menggunakan operator qw().

@minuman = qw(kopi teh air);

Hash. Definisi hash mirip dengan array. Setiap elemen hash terdiri atas pasangan indeks (key) dan nilai (value). Berbeda dengan array, indeks di hash menggunakan string, dan nilainya bisa diakses dengan sintaks $hash{'indeks'}.

%aplikasi = (
'bahasa', 'perl',
'server', 'apache',
'teks', 'vim',
);
print $aplikasi{'bahasa'}; # perl

Indeks yang mengandung karakter sederhana tidak perlu dikutip karena otomatis dianggap sebagai string. Namun jika indeks mengandung karakter selain huruf dan angka, kutip harus digunakan. Hal ini juga berlaku ketika mengakses elemen. Jadi, $aplikasi{'bahasa'} bisa ditulis sebagai $aplikasi{bahasa}.

Benar dan Salah. Kadang-kadang Anda tidak ingin mengetahui nilai kembalian dari sebuah ekspresi, baik string maupun angka, Anda hanya ingin tahu benar atau salah. Perl tidak punya jenis data boolean khusus. Nilai sebuah ekspresi adalah salah satu dari: tak terdefinisi (undefined), benar (true), atau, salah (false). Untuk memudahkan urusan, selanjutnya saya akan menyebut “tak terdefinisi” dengan “undef”. Aturan Perl sederhana, semua nilai benar, kecuali yang undef, string kosong ("" atau ''), angka 0, dan string "0".

Fungsi dan Operator

Biasanya tidak begitu penting untuk membedakan fungsi dan operator yang bernama, jadi penggunaan istilah-istilah ini akan dilakukan bergantian. Fungsi pada umumnya menggunakan “()” untuk meletakkan parameter. Tapi, Perl tidak mewajibkan kita untuk menggunakan tanda kurung, tapi Perl juga tidak melarang.

Kebanyakan programer Perl lebih suka meninggalkan tanda kurung, kecuali memang diperlukan untuk mencegah Perl salah menafsirkan apa yang kita inginkan. Dalam kondisi tanpa tanda kurung, perl melakukan yang terbaik untuk menjalankan apa yang (dia pikir) kita maksudkan. Misalnya kode,

%hash = (satu => 1, dua => 2, tiga => 3);
print reverse sort keys %hash;

akan mencetak indeks dari %hash dalam urutan terbalik, tigasatudua. Namun, tidak ada yang menghalangi Anda untuk menulis kode dalam bentuk,

print(reverse(sort(keys(%hash))));

Perl mendukung semua operasi aritmetika. Operator untuk mendefinisikan variabel, =, sudah banyak contoh di atas. Perl menyediakan operasi perbandingan untuk string dan operator dalam set yang berbeda. Tabel 1 memberikan sebagian dari operator tersebut. Daftar lengkap, dan juga operator lain, bisa dilihat di manual perlop. Kita akan membahas mereka jika sampai waktunya.

Tips: Jangan pernah membandingkan string dengan menggunakan operator untuk angka, Anda akan mendapatkan hasil yang tidak diinginkan.

Definisi, Pernyataan, Ekspresi, dan Kontrol

Sebuah program Perl berisi sekumpulan definisi, pernyataan, dan ekspresi yang ditulis dengan aturan tertentu. Tidak ada aturan baku dalam penulisan sintaks. Anda bisa menulis keseluruhan program dalam satu baris, atau mengaturnya sedemikian rupa sehingga membentuk gambar tertentu. Atau, kalau Anda seperti “orang-orang normal” lainnya, Anda mungkin akan menuliskan kode program Anda baris demi baris, beberapa di antaranya diberi takik untuk menunjukkan level. Apapun yang Anda pilih, yang tidak boleh dilupakan adalah, Anda harus selalu menggunakan ; untuk menutup sebuah pernyataan. Anda boleh tidak menyertakan ; untuk pernyataan terakhir di sebuah blok.

Blok sendiri adalah sebuah daerah yang dibuka dengan { dan ditutup dengan } berisi satu atau lebih pernyataan. Blok biasanya digunakan di beberapa konstruksi kontrol atau iterasi, tapi blok juga bisa berdiri sendiri. Anda bahkan bisa menamainya.

Pernyataan Bersyarat. Konstruksi pernyataan bersyarat menggunakan if. Untuk mengeksekusi pernyataan lain yang berbeda dari kondisi, digunakan else. Rantai pengujian kondisi bisa dilakukan dengan menambahkan elsif di antara if dan else. Misalnya,

# asumsi: rutin ambil_data_warga() sudah didefinisikan
($nama, $umur) = ambil_data_warga();
if ($umur < 5) {
print "Balita";
}
elsif ($umur < 22) {
print "Anak sekolah";
}
else {
print "Saatnya bekerja";
}

Untuk pernyataan sederhana Anda bisa membalik posisi kondisi dan pernyataan tanpa menggunakan {}. Dari contoh data di atas, umumnya lebih disukai menuliskan,

kirim_ke_posyandu($nama) if $umur < 5;

dari pada,

if ($umur < 5) { kirim_ke_posyandu($nama) }

Versi negasi dari if adalah unless. Anda bisa juga tetap menggunakan if, dan negasi dilakukan pada kondisi dengan operator ! atau not.

silahkan_jalan() unless !$izin;

Iterasi. Konstruksi iterasi yang paling sering digunakan adalah while, foreach, dan for. Pernyataan dalam blok while akan terus dieksekusi selama ekspresinya bernilai benar. Pernahkah Anda melihat program yang memantau perkembangan anak sejak lahir?

while ($umur < 5) {
print "Masih balita\n";
kirim_ke_posyandu($nama);
}
print "Baiklah, sudah besar sekarang\n";

foreach mengiterasi sebuah list (atau ekspresi apapun yang mengembalikan list, termasuk array) dan menyimpan elemen list pada sebuah variabel skalar pada setiap putaran. Pernyataan dalam blok kemudian bebas melakukan apa saja dengan variabel tersebut.

foreach $nama (@daftar_murid) {
# lakukan sesuatu dengan $nama
}

Jika variabel skalar ($nama kalau dari contoh di atas) tidak disebutkan, maka elemen list akan otomatis di simpan di variabel khusus $_.

foreach (ambil_daftar_lagu()) {
if ($_ eq "Bengawan Solo") {
print "Aha, lagu favorit!\n";
} else {
print "Biasa saja.\n";
}
}

Konstruksi for punya dua bentuk. Yang pertama merupakan versi singkat dari foreach—sebenarnya, menurut manual foreach adalah sinonim (dan versi singkat) dari for. Bentuk yang kedua sama dengan yang ada di C. Program di bawah ini akan mencetak angka 0 sampai 9 pada setiap baris—karena adanya karakter baris baru, \n—lalu mencetak “Selesai!”. Anda melihat penggunaan operator penambahan, ++, yang otomatis membuat nilai $i bertambah 1. Operator ini bisa diletakkan sebelum maupun sesudah variabel.

for ($i = 0; $i < 10; $i++) {
print "$i\n";
}
print "Selesai!\n";

Anda tidak perlu menunggu sampai iterasi selesai. Untuk semua konstruksi operasi, Anda bisa loncat ke iterasi berikutnya dengan menggunakan next, langsung keluar dari iterasi dengan last, dan dengan redo, Anda bisa mengulang keseluruhan proses dari awal blok tanpa memeriksa kondisi. Seperti juga if, Anda bisa menempatkan pernyataan sebelum while, for, maupun foreach.

# sama dengan for di atas tapi hanya angka yang dicetak
print "$i\n" while $i++ < 10;

# @INC adalah variabel khusus yang menyimpan daftar direktori standar
# tempat menyimpan modul-modul Perl
print for @INC;

Membuat Program CGI

Setelah menghabiskan lebih dari setengah bagian tutorial untuk hal-hal dasar, sekarang saatnya kita masuk ke hal yang sebenarnya, membuat program CGI. Tapi, apa itu CGI? Apa hubungannya dengan HTTP dan HTML?

Sekilas Tentang CGI

HTTP, seperti kita tahu, adalah protokol yang mengatur transfer data dari webserver ke browser dan sebaliknya. Mekanisme CGI (Common Gateway Interface) memungkinkan webserver untuk menjalankan program lain yang akan memroses data yang akan dikembalikan. Browser mengirimkan URL dengan parameter yang berbeda-beda sehingga webserver bisa mengirimkan data secara dinamis pula.

Mekanisme CGI dirancang agar bisa diimplementasikan dengan menggunakan bahasa pemrograman apapun, baik bahasa skrip maupun bahasa terkompilasi. Karena kepraktisan dan kemampuannya dalam memroses teks, Perl banyak digunakan untuk membuat program CGI. Hingga akhirnya banyak yang menyamakan CGI dengan Perl. Ungkapan “CGI = Perl” adalah ungkapan yang salah. CGI adalah sebuah mekanisme, dan Perl adalah sebuah bahasa pemrograman.

Environment Variable

Setiap sistem operasi punya mekanisme untuk menyediakan informasi yang bisa diakses—dibaca dan dimodifikasi—oleh proses-proses yang berjalan di atasnya. Sebuah proses kemudian bisa menurunkan informasi ini kepada anaknya dan seterusnya. Kumpulan informasi ini disebut Environment Variable, dalam program, diakses sebagai sebuah variabel, selanjutnya akan kita singkat menjadi “variabel ENV” atau “ENV” saja.

Nah, salah satu hal yang diatur dalam mekanisme CGI adalah soal ENV ini. Aturan tersebut menetapkan ENV apa saja yang “harus”, “sebaiknya”, atau “boleh”, disediakan oleh sebuah webserver. Untuk memudahkan urusan, perl menyimpan ENV dalam sebuah variabel khusus hash bernama %ENV (tidak heran, bukan?). Contoh,

$ENV{HTTP_USER_AGENT} # nama/model browser
$ENV{REMOTE_ADDR} # alamat IP

Mencetak Data ke Browser

Spesifikasi HTTP menyatakan bahwa setiap mengirim keluaran (respond) ke browser, webserver harus menyertakan sekumpulan informasi yang disebut HTTP response header, atau header untuk singkatnya. Antara header dan isi dokumen, harus dipisahkan dengan dua baris baru.

Dalam menulis program CGI, informasi header yang paling penting adalah Content-Type. Header inilah yang akan memberitahukan kepada browser bagaimana isi dokumen harus ditampilkan. Tanpa informasi ini, browser Anda akan menampilkan pesan 500 Internal Server Error. Saya menjamin, selama Anda membuat program CGI—dalam bahasa apapun—pesan ini akan menjadi sesuatu yang selalu Anda nantikan. Setiap browser punya cara sendiri untuk menampilkannya. Pasti ada saja kesalahan yang dilakukan, dan kebanyakan sepele.

Skrip yang kita bikin akan menghasilkan dokumen HTML. MIME type untuk dokumen HTML adalah text/html. Kita akan memulai program kita dengan shebang dan mencetak Content-Type untuk dokumen HTML.

#!/usr/bin/perl –w
print "Content-Type: text/html\n\n";

Di contoh-contoh sebelumnya Anda sudah sering melihat karakter \n. Itu sebenarnya karakter tunggal yang merepresentasikan “baris baru” di sistem Linux, yang hanya mungkin terjadi dalam string yang dikutip ganda. Dalam kutip tunggal \n tetaplah terdiri atas dua karakter, yaitu \ (garis miring terbalik), dan huruf n.

Mencetak Dokumen HTML

Tidak ada yang istimewa dalam mencetak dokumen HTML di perl. Kita hanya mencetak yang kita inginkan. Fungsi print() menerima parameter list. Kita bisa melakukan,

print "<html>\n",
"<head>\n",
"<title>Tutorial#1 - Environment Variables</title>\n",
"</head>\n";

Operator qq() memungkinkan kita untuk mengutip ganda string tanpa perlu menggunakan \, seperti yang dijelaskan sebelumnya. Untuk <body>, saya menambahkan atribut warna.

print qq(<body bgcolor="#FFFFFF" text="#000000">\n);

Selain tanda (), Anda bisa menggunakan karakter bukan alfanumerik lain, seperti qq{}, qq//, qq!!, dan lain-lain, selama karakter tersebut tidak disertakan dalam string. Kalau tidak, Anda jatuh kembali pada persoalan yang sama. Jika yang Anda gunakan adalah varian tanda kurung, pastikan bahwa tidak ada kurung buka tanpa pasangan penutupnya dalam urutan yang benar. Contoh berikut ini salah,

print qq!"Jangan berseru!" katanya\n!;

Tapi yang ini benar dan akan mencetak 2 < 3 dan 5 > 4,

print qq<2 < 3 dan 5 > 4>;

Untuk kutip tunggal disediakan q(). Aturan pemakaiannya sama. Jadi, dari pada menulis,

$kalimat = '"Saya mengubahnya Jum\'at kemarin," katanya.';

Anda mungkin lebih suka menulis,

$kalimat = q!"Saya mengubahnya Jum'at kemarin," katanya.!;

Menampilkan Elemen ENV

Seperti disebutkan, ENV bisa diakses oleh skrip Perl melalui hash %ENV. Kita akan melakukan iterasi untuk mencetak semua elemen %ENV dalam format “NAMA = NILAI”, baris demi baris. Untuk mengiterasi %ENV kita menggunakan each(). Fungsi ini akan mengembalikan pasangan elemen berikutnya dalam bentuk list, sehingga kita bisa menyimpannya dalam array maupun list dari variabel skalar. Kita menggunakan dua variabel skalar untuk menampung kembalian dari each().

($nama, $nilai) = each %ENV;

Jika semua pasangan elemen sudah dikembalikan, each() akan mengembalikan list kosong yang bernilai salah dan mengakhiri while. Dengan demikian, kita bisa menggunakan konstruksi di atas sebagai kondisi bagi while. Selanjutnya tinggal mencetak $nama dan $nilai sesuai dengan format yang sudah kita tentukan.

while ( ($nama, $nilai) = each %ENV ) {
print "$nama = $nilai<br>\n";
}

Perhatikan bahwa kita bisa langsung memasukkan variabel ke dalam string. Ini disebut interpolasi, dan hanya akan terjadi pada string yang menggunakan kutip ganda. Hal ini juga berlaku untuk array (dengan ketentuan berbeda), tapi tidak dengan hash.

Tugas terakhir adalah menutup dokumen HTML,

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

Bentuk Akhir Skrip

Kalau dikumpulkan, skrip kita seutuhnya akan menjadi,

#!/usr/bin/perl -w
print "Content-Type: text/html\n\n";
print "<html>\n",
"<head>\n",
"<title>Tutorial#1 - Environment Variables</title>\n",
"</head>\n";
print qq(<body bgcolor="#FFFFFF" text="#000000">\n);
while ( ($nama, $nilai) = each %ENV ) {
print "$nama = $nilai<br>\n";
}
print "</body></html>\n";

Sebuah program yang sangat sederhana. Jika webserver Anda terkonfigurasi dengan baik, browser Anda akan menampilkan daftar ENV kurang lebih sama seperti yang ada di Gambar 1.

Dan demikianlah akhir dari tutorial pertama ini. Kita sudah membahas tentang penggunaan variabel, menggunakan beberapa fungsi dan operator, mengenal konstruksi bersyarat dan iterasi, menggunakan salah satu konstruksi iterasi (while), dan membuat sebuah program CGI. Bulan depan kita mencoba membuat program yang lebih “berguna”, di mana pengguna browser bisa memasukkan informasi untuk kemudian diproses lebih lanjut. Selamat mencoba!

Terima kasih buat Rheza dan Lola yang telah menyediakan tempat dan fasilitas sehingga saya dapat menyelesaikan tutorial ini dengan tenang.

Hasanuddin Tamir developer software, bekerja di Trabas. Tinggal di Bandung.

Arsip mwmag[Files]  [Up]www.master.web.id/mwmag