Pemrograman Perl by caktoni

VIEWS: 247 PAGES: 12

									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.

								
To top