Tujuan: Setelah
membaca tutorial ini, pembaca dapat memahami manipulasi array dan manipulasi
file di Perl, serta melakukan IPC sederhana.
Abstrak: Belajar Perl
dengan contoh kasus manajemen user di Linux.
Dalam buku klasik The C Programming Language, Kernighan dan Ritchie pernah mengatakan,
“Satu-satunya cara belajar bahasa pemrograman yaitu dengan membuat program
dalam bahasa tersebut.” Anda akan melihat bahwa
pernyataan itu sangat benar ketika Anda belajar Perl.
Setelah
Anda membaca tutorial pertama mengenai Perl, kemungkinan Anda sudah pusing
melihat keanehan dan kerumitan sintaks Perl. Kebanyakan orang akan berpikir kok ada bahasa pemrograman dengan sintaks yang
aneh seperti ini? Memangnya ini bakal terpakai di dunia
nyata?
Contoh Kasus
Dalam edisi ini
saya akan membahas bagaimana melakukan manajemen user
di Linux. Saya akan menggunakan contoh kasus di jurusan—di
ITB sendiri jurusan disebut Departemen—Teknik Informatika. Setiap tahun di
Teknik Informatika akan ada mahasiswa baru yang perlu
dibuatkan account di berbagai server departemen yang meliputi Linux, Windows,
dan Netware. User baru ini jumlah mencapai puluhan, sekitar
80–90 mahasiswa baru S1 setiap tahunnya. Untuk
menciptakan user secara manual tentunya makan waktu yang lama, oleh karena itu
perlu dibuat sebuah program untuk menciptakan user. Agar pembahasannya
lebih mudah, yang akan dibuat di sini hanyalah program
untuk membuat account di sistem operasi Linux. Harap diingat
bahwa Perl tersedia juga di Windows dan DOS/Netware.
Bermain dengan File di Perl
Setiap awal
semester Tata Usaha akan memberikan file, yang
biasanya dalam format Excel yang berisi NIM (Nomor Induk Mahasiswa) dan Nama
Mahasiswa yang perlu dibuatkan account di server jurusan. Dari Gnumeric—atau
software spreadsheet apapun yang cukup fiturnya seperti StarCalc, kspread, atau
Ms Excel—file tersebut dapat diekspor ke format yang lebih mudah ditangani Perl
yaitu CSV (comma separated value).
Format CSV adalah
format database teks sederhana di mana setiap row data diletakkan dalam satu
baris fisik file, sementara setiap field dipisahkan dengan tanda koma. Contoh
file CSV misalnya seperti ini:
13500067,Estevina Indri 13597075,Junaidi 13500069,Weni Hartanti 13590004,Oon 13500030,Yunita Caroline M
Anda sudah bisa melihat bahwa langkah
pertama untuk membuat program pencipta account adalah dengan membuka file daftar
user (anggap saja namanya user.txt), membaca baris demi baris, lalu menambahkan user yang ada di setiap baris tersebut ke
dalam sistem.
Untuk membuka file di Perl, Anda bisa
memakai fungsi open. Seperti ini:
open(F, "user.txt");
atau kalau ingin
membukanya untuk ditulisi:
open(F, ">laporan.txt");
dan untuk diappend
(ditulisi tapi hanya di bagian akhirnya):
open(F, ">>log.txt");
Bagi Anda yang pernah memakai DOS atau Unix, tentunya Anda sudah mengenal >
dan >> untuk melakukan redireksi output program ke file.
Untuk saat ini kita akan berkonsentrasi ke membaca
file dulu. Kode berikut ini akan membaca sebuah baris
dari file:
$baris = <F>;
Operator untuk membaca
file di Perl adalah <>
(aneh ya?). Operator ini bisa juga bekerja pada konteks list, seperti
ini:
@semua = <F>;
Sekarang variabel @semua
akan berisi seluruh baris yang tersisa di file—atau
semua baris di file, jika tadi Anda belum membaca filenya. Program akan memroses setiap baris, jadi kita akan menggunakan loop while
semacam ini:
while ($baris = <F>) { print $baris;}
Potongan program tersebut akan
mencetak baris-baris di file yang ditunjuk oleh filehandle F.
Ketika akhir dari file dicapai, <F> akan mengembalikan nilai undef,
yang secara boolean false di Perl, sehingga loopnya akan berhenti.
Di Perl dikenal yang
namanya variabel default yaitu $_.
Jika nama variabel tidak diberikan untuk kasus-kasus
tertentu maka $_ akan dianggap sebagai nama variabelnya.
Larry Wall, pencipta Perl, menyukai variabel ini karena fungsinya mirip dengan
dalam bahasa alami manusia, yang kadang menghemat penyebutan kata benda dengan
kata ganti atau dengan tidak disebut sama sekali
(“Budi membawa sepotong coklat. Budi memakannya. Budi habiskan.”) Variabel ini juga memberi andil dalam
mempersingkat program Perl. Jadi baris kode sebelumnya bisa diganti menjadi
seperti ini:
while (<F>) { print;}
yang artinya sama
saja dengan:
while ($_ = <F>) { print $_;}
Sebenarnya tidak sama
persis, karena perbedaan scope $_, tapi saya tidak akan
mempermasalahkannya saat ini.
Setelah program kita membaca file dan
mengambil baris demi baris, kita perlu memisahkan tiap baris data antara bagian
NIM mahasiswa dengan namanya, kemudian membentuk nama
login yang sesuai. Di Unix dan berbagai OS lain, nama
user tidak boleh terdiri dari angka saja, sehingga NIM mahasiswa tidak bisa
dijadikan nama login. Oleh karena itu perlu dibuat aturan
sederhana untuk mengubah NIM menjadi login yang unik.
Saya akan sedikit
menyimpang dari Perl dulu untuk menjelaskan mengenai skema user ID. Jika Anda harus menangani user dalam jumlah besar di perusahaan
atau sekolah sebaiknya Anda membuat skema penamaan yang konsisten sehingga
memudahkan administrasi. Hal ini tentunya bisa jadi
lebih tidak disukai untuk layanan yang membayar—misalnya webhosting atau email—di
mana user ingin memilih user ID sendiri.
NIM atau NIP atau nomor apapun yang menjadi
identifikasi biasanya dibuat dengan skema tertentu, di ITB skema untuk NIM
adalah W XX YY ZZZ, W
adalah kode strata (1=S1, 2=S2), XX adalah kode jurusan, YY
adalah 2 digit angkatan, dan ZZZ adalah nomor urut mahasiswa di
angkatan tersebut. Contohnya 13500030 (135-00-030) adalah
mahasiswa S1 Teknik Informatika (135) angkatan 2000 (00) dengan nomor urut 30.
Login yang dipakai di Teknik Informatika memakai skema ifWYZZZ. Prefiks if
dipakai agar login tidak diawali dengan angka. Di sini hanya dipakai satu digit
tahun terakhir Y karena maksimum waktu belajar
mahasiswa adalah 7 tahun, sehingga tidak perlu takut akan terjadi bentrok antar
digit akhir tahun yang berjarak 10 tahun.
Di Perl penjelasan panjang itu bisa
diekspresikan seperti ini:
# buat login dari NIM $login =~ s/^(.)35.(.)(...)$/if$1$2$3/;
Saya tidak akan
menjelaskan bagaimana regex di atas bekerja, karena Anda bisa membaca sendiri
tutorial khusus regex di majalah ini juga. Jadi programnya sekarang seperti
ini:
open(F, "user.txt"); open(L, ">laporan.txt"); while (<F>) { chomp; # hilangkan 'enter' di akhir baris ($login, $nama) = split(/,/); print L "Nim : $login "; $login =~ s/^(.)35.(.)(...)$/if$1$2$3/; print L "Login: $login Nama: $nama\n"; } close(F); close(L);
Karena saya belum mengajarkan pada Perl
bagaimana menambahkan user, program hanya akan membaca
entri di file user.txt, lalu membuat—atau menimpa jika
sudah ada—file laporan.txt yang isinya baris-baris berisi
NIM, login, dan nama user. Contoh baris di laporan.txt:
Nim : 13500030 Login: if10030 Nama: Yunita
Dengan begini setidaknya
saya bisa memeriksa bahwa regex yang saya pakai sudah benar.
Untuk memisahkan bagian NIM dengan Nama
digunakan fungsi split. Fungsi split
sangat berguna untuk memecah string yang memiliki pembatas tertentu, dalam
kasus ini pembatasnya adalah koma (,). Di manual daftar fungsi Perl (perlfunc),
Anda bisa melihat bahwa fungsi split memiliki prototipe seperti ini:
split /PATTERN/,EXPR,LIMIT split /PATTERN/,EXPR split /PATTERN/
EXPR
adalah string yang akan displit, dalam prototipe yang
terakhir, string yang dipakai adalah isi dari variabel $_.
PATTERN adalah regex pembatas string.
Jadi Anda tidak harus memakai karakter tunggal sebagai
pembatas. Misalnya Anda punya file, yang pemisah fieldnya adalah
karakter tab, lalu Anda menyuruh seseorang untuk mengedit filenya—kebetulan
orang tersebut tidak menyadari bahwa pemisah seharusnya adalah tab—dan dia
mengira field itu dipisah dengan spasi, maka dia memakai spasi alih-alih tab.
Anda tetap bisa memisahkan dengan benar setiap field seperti ini:
@hasil = split(/ +|\t/);
Baris itu berarti pisahkan
string di $_ dengan pemisah
field satu atau lebih spasi, atau sebuah tab.
LIMIT
dipakai untuk membatasi jumlah field yang menjadi hasil split. Misalnya lagi,
Anda punya file seperti ini:
0811xxxxxx Yudis 0815xxxxxx Gregorius Ardhian 0856xxxxxx Nita
pemisah antara nama
dengan nomor telepon adalah spasi, tapi pemisah antara nama depan dengan nama
belakang juga spasi. Dalam contoh ini kita tahu, bahwa jumlah field di setiap
row cuma ada 2, jadi kita tetap bisa memisah stringnya dengan benar seperti
ini:
($nomor, $nama) = split(/ /, $datum, 2);
Satu hal yang belum saja jelaskan mengenai split,
split bekerja di konteks list, atau gampangnya dapat
dikatakan bahwa split menghasilkan list. Anda bisa
menampung hasil split di sebuah variabel array, atau ke
beberapa variabel dengan menggunakan notasi list ().
Ada satu pelajaran lagi yang bisa dipetik dari
contoh di atas yaitu cara menulis file. Cara menulis
ke file di Perl sangat mudah, cukup dengan:
print FILEHANDLE ekspresi
misalnya seperti
ini:
print F "hallo";
Fungsi print akan mencetak string, defaultnya ke layar (atau lebih
tepatnya STDOUT, keluaran standar) atau ke
filehandle yang kita tentukan. Setelah selesai membaca atau menulis ke file,
jangan lupa menutupnya kembali dengan close, seperti ini:
close(FILEHANDLE);
IPC Sederhana di Perl
Mungkin hal yang paling penting ketika
belajar bahasa pemrograman adalah belajar bagaimana mengendalikan program lain.
Jadi jika sudah ada program yang bisa melakukan seluruh atau
sebagian hal yang Anda inginkan, Anda cukup menjalankan program itu, dan
mengambil hasilnya—kalau program itu menghasilkan sesuatu. Pada banyak
bahasa pemrograman, mengendalikan program lain biasanya sangat sulit, tapi di
Perl hal ini sangat mudah dilakukan.
Sebelum melangkah lebih jauh, saya akan jelaskan lebih dulu apa itu IPC dan apa hubungannya
dengan mengendalikan program. Di lingkungan multitasking, umumnya sebuah
proses, yaitu sebuah instan program yang sedang berjalan, perlu berkomunikasi
dengan proses lain di sistem yang sama. Di lingkungan
jaringan sebuah proses juga mungkin perlu berkomunikasi dengan proses lain di
komputer lain. Komunikasi antarproses ini disebut dengan IPC
(Interprocess Communication). IPC di Perl dibangun
berdasarkan konsep IPC Unix yang meliputi sinyal, FIFO, subproses, pipa, soket,
dan semafur. Tidak semua sistem operasi mendukung
seluruh bentuk IPC Perl. Misalnya, di Windows tidak
ada FIFO dan sinyal. Beberapa bentuk IPC juga memerlukan pengetahuan
yang cukup dalam mengenai sistem Unix, jadi yang akan dibahas di sini hanya dua
bentuk IPC saja yang paling sederhana dan paling berguna yaitu pipa, dan salah
satu bentuk IPC dengan subproses yaitu fungsi system.
Fungsi system()
Fungsi system merupakan fungsi yang sangat ampuh.
Dengan fungsi system kita bisa memanggil program apa saja untuk dijalankan seolah-olah kita mengetikkannya
dari shell, misalnya begini:
system("ls"); # di Unix system("notepad.exe"); # di windows system("mpg123 Kunang-kunang.mp3"); # memainkan mp3
Fungsi system baru akan kembali jika program yang dijalankan sudah selesai,
jadi untuk contoh yang terakhir Anda harus menunggu sampai lagu kunang-kunang
selesai sebelum program diteruskan. Di OS tertentu, seperti varian Unix yaitu Linux, BSD, BeOS, Anda bisa menambahkan tanda
ampersand (&) agar program dijalankan di
background seperti ini:
system("play The-Corrs-One-night.wav &");
Jika baris itu diletakkan di baris awal
program Anda maka program Anda berjalan dengan diiringi lagu The Corrs, One Night.
Sudah cukup penjelasannya,
kita kembali ke kasus semula. Yang dibutuhkan program
kita adalah kemampuan untuk menambah user. Tentunya
yang pertama terpikir oleh Anda adalah program useradd.
Program itu memang merupakan cara termudah menambah
user, kita tidak perlu peduli apakah sistem memakai shadow password, NIS, atau apapun. Di Linux untuk menambah user
kita cukup melakukan ini:
# useradd yohanes -c "Yohanes Nugroho" # passwd yohanes
Perintah pertama
menciptakan user, sedangkan yang kedua memberikan password ke user yang baru
saja dibuat. Setelah mengetahui itu, kita bisa dengan mudah memodifikasi
program pertama tadi dengan menyisipkan baris ini di akhir loop while:
system("useradd $login -c '$nama'");
Tapi kita juga perlu
mengeset password usernya agar aman. Kita bisa saja mengeset passwordnya
dengan nilai default tertentu (misalnya sama dengan
user ID), tapi jika memungkinkan, sebaiknya dibuat password yang acak. Tentu masalahnya dengan password yang random adalah, Anda perlu
memberikan manual ke setiap user. Dalam kasus ini hal
tersebut mungkin dilakukan karena setiap mahasiswa baru wajib ikut pelatihan
Linux.
Untuk membuat password acak Anda bisa
memakai program yang khusus menghasilkan password, misalnya program mkpasswd
di package expect, atau kita buat saja dengan cara kita sendiri. Di Linux, kalau Anda mencoba perintah ini
di prompt bash, Anda akan
mendapatkan string yang acak setiap kali perintah ini dijalankan
dd if=/dev/urandom bs=1 count=6 2>/dev/null | mimencode
Cukup bagus, kan? Tapi sekarang, bagaimana
caranya membaca keluaran perintah tersebut dengan mudah? Sekarang IPC dengan pipa dapat dipakai di sini. Kalau Anda
“membuka” program seperti ini:
open(F, "ls|");
Anda bisa membaca F
seolah-olah Anda membuka sebuah file. Hasil dari pembacaan
Anda adalah keluaran dari perintah ls.
Dari contoh tersebut kita bisa membuat password yang acak dengan cara seperti ini:
open(R, "dd if=/dev/urandom bs=1 count=9 2>/dev/null | mimencode |"); $password = chomp(<R>); close(R);
Setelah kita punya
password yang baru, kita perlu mengeset passwordnya. Caranya cukup
mudah, kalau di prompt bash, Anda bisa melakukannya seperti ini:
echo "passwordbaru" | passwd --stdin riza
Opsi --stdin hanya ada pada program passwd versi baru, jadi jika program passwd Anda tidak mendukung opsi itu,
upgradelah program Anda itu.
Untuk melakukan hal yang sama
di Perl, kita kembali memakai IPC dengan pipa. Kita cukup membalik tanda |
supaya ada di depan perintah jika kita ingin “menulis” ke perintah tersebut.
Seperti ini:
open(P, "|passwd --stdin $login"); print P $password; close P;
Sayangnya Anda tidak bisa
memakai | untuk membaca dan
menulis sekaligus.
open(S, "|sort|");
tidak akan berhasil. Untuk
bisa membaca dan menulis sekaligus Anda perlu membaca manual perlipc. Dalam contoh kali ini
kemampuan seperti itu tidak diperlukan, jadi saya tidak akan membahasnya.
Lengkap sudah pengetahuan yang diperlukan
untuk menambah user. Sekarang kita bisa membuat program lengkap untuk menambah
user. Algoritmanya seperti ini: untuk setiap baris di file user.txt:
1) baca NIM dan Nama; 2) ciptakan login dan password; 3) buat user dengan
program useradd; 4) set password user; 5) tuliskan
login dan password di file laporan.
Login dan password perlu ditulis di file supaya Nona sekretaris yang ada di Tata Usaha bisa
mencetaknya, memotong kertasnya menjadi kecil-kecil lalu memberikan potongan
kertas yang sesuai ke mahasiswa baru yang meminta password, sebelum pelatihan
Linuxnya dimulai.
Sekarang program lengkapnya menjadi:
#!/usr/bin/perl open(F, "user.txt"); open(L, ">laporan.txt"); while (<F>) { chomp; # hilangkan 'enter' di akhir baris ($login, $nama) = split(/,/); print L "Nim : $login "; $login =~ s/^(.)35.(.)(...)$/if$1$2$3/; print L "Login: $login Nama: $nama "; #ciptakan usernya system("useradd $login -c '$nama'"); #buat password barunya open(R, "dd if=/dev/urandom bs=1 count=9 ". "2>/dev/null | mimencode|"); $password = <R>; chomp($password); close(R); print L "Password: $password\n"; #set password baru open(P, "|passwd --stdin $login"); print P $password; close P; } close(F); close(L);
Meskipun saya bilang
lengkap, sebenarnya program ini tidaklah benar-benar lengkap karena tidak
melakukan penanganan kesalahan yang mungkin terjadi.
Hanya dengan mengetahui cara memanipulasi
file ditambah dengan IPC Anda sudah bisa membuat banyak program yang berguna.
Dengan template program di atas, Anda bisa membuat program lain yang serupa. Misalnya saya telah membuat program untuk men-subscribe-kan peserta
mata kuliah ke dalam milis mata kuliah. Masukan yang diberikan adalah
file berisi data peserta mata kuliah, dan program eksternal yang dijalankan
adalah ezmlm-sub. Program akan
membaca file, lalu untuk setiap user, cukup dijalankan ezmlm-sub
seperti ini:
ezmlm-sub /var/qmail/alias/if223 login@students.if.itb.ac.id
Setelah puas bermain dengan file dan IPC,
saya akan masuk ke contoh kasus kedua di mana saya
akan menerangkan manipulasi array di Perl.
Memeriksa Masalah Email User
Urusan email bagi sebagian orang merupakan
hal yang sangat penting. Hampir setiap minggu di Teknik Informatika selalu ada
orang yang mengeluhkan bahwa dia tidak bisa mengirim dan/atau menerima email. Umumnya mereka membuat kesalahan yang sama, pertama adalah mengeset permission home directory
menjadi dapat ditulisi oleh semua orang (jika home dir dapat ditulisi oleh
semua orang, program MTA akan menolak menyampaikan email). Dan yang kedua
adalah salah mengeset filter email (procmail).
Kesalahan kedua ini jarang
terjadi dan harus diperiksa secara manual. Kesalahan
pertama sangat sering terjadi dan cukup merepotkan admin, padahal hal ini bisa
diperiksa dengan otomatis. Umumnya mahasiswa lupa
mengembalikan permission home directory setelah menyalin tugas dari sesama
rekannya. Heran, padahal ada fasilitas mail dan ftp lho.
Daripada harus melakukan langkah-langkah
seperti ini:
# Lihat apakah memang dia melakukan kesalahan itu lagi. # ls -ld ~namauser drwxrwxrwx 28 namauser grupuser 4096 Oct 9 14:55+ /home/namauser # Ah, mereka tak pernah mengerti. Jadi harus dibetulkan. # chmod 711 ~namauser # Kirimkan email standar, menanyakan apakah dia sudah baca dokumen # penggunaan email di Teknik Informatika. # mail namauser < pesan.txt
akan lebih baik
jika dibuat sebuah program yang akan memeriksa seluruh user, dan membetulkannya
permission home directory user yang salah. Pertama tentunya
kita perlu mendapatkan daftar user, untuk mendapatkannya kita bisa memanfaatkan
fungsi getpwent (get password
file entry) di Perl. Fungsi ini akan
mengiterasi setiap entri yang ada di /etc/passwd (database user dan password di
Unix). Nilai kembalian fungsi ini adalah list seperti berikut ini:
($userid, $passwd, $uid, $gid, $quota, $comment, $name, $home, $shell) = getpwent();
Andaikan kita hanya butuh userid dan nama user saja kita bisa melakukanya seperti ini:
@entry = getpwent(); $userid = $entry[0]; $name = $entry[6];
tapi kita juga bisa
melakukannya dengan lebih mudah seperti ini:
($userid, $name) = (getpwent())[0,6];
Mungkin Anda bingung
dengan notasi di atas. Selain array, Perl juga
mengenal array slice, atau potongan array. Misalnya kita punya daftar
seperti ini:
@jagoan = ("prue", "piper", "phoebe", "blossom", "buttercup", "bubble");
maka kita bisa mengambil sebagian isi
arraynya seperti ini:
@charmed = @jagoan[0,1,2]; #isi @charmed adalah ("prue", "piper", "phoebe")
Tentunya indeksnya tidak perlu urut, Anda
bisa melakukan seperti ini:
@jagoanku = @jagoan[1, 5]; # @jagoanku = ("piper", "bubble");
Untuk mendapatkan daftar semua user ID, nama, berikut home directorynya di Unix, Anda bisa
melakukannya seperti ini:
while (($id, $name, $home) = (getpwent())[0, 6, 7]) { print "Id:$id Nama:$name Home:$home\n"; }
Setelah mampu mendapatkan
daftar user dan homenya, sekarang kita perlu mendapatkan mode atau permission
dari setiap home directory. Di Unix, untuk
mendapatkan informasi mengenai file, kita memakai fungsi stat.
Kembalian fungsi ini adalah array seperti ini:
($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat $filename;
Saya tidak akan
menjelaskan semua yang dikembalikan. Yang kita perlukan cuma $mode,
karena kita hanya perlu tahu apakah direktori tersebut dapat ditulisi orang
lain.
Anda bisa melihat mengenai permission Unix
di tutorial Linux yang ada di majalah ini, jadi saya tidak akan menjelaskannya
di sini. Cuma satu yang perlu diketahui, permission yang benar dalam contoh ini
adalah 0711, jadi kita cukup memeriksa apakah permission sama atau tidak dengan
ini. Jika tidak, kita perlu mengubahnya dengan chmod, seperti
ini:
chmod 0711, $home
Dengan pengetahuan tambahan itu, sekarang
sudah cukup untuk membuat versi sederhana dari program kita:
while (($home) = (getpwent())[7]) { ($mode) = (stat($home))[2]; if ($mode != 0711) { chmod 0711, $home; } }
Tapi orang yang bersalah perlu
diberi peringatan. Kita perlu mengirim email ke setiap orang yang
bermasalah. Kita juga perlu membuat daftar orang yang
bermasalah dan mengirimkannya ke admin.
$mailer = 'sendmail'; @bermasalah = (); #daftar orang bermasalah # catatan: program ini tidak fool proof, karena home # directory belum tentu ada untuk setiap user while (($id, $name, $home) = (getpwent())[0, 6, 7]) { ($mode) = (stat($home))[2]; $mode &= 0777; if ($mode != 0711) { #kirim email open(F, "|$mailer $id\@students.if.itb.ac.id"); #isikan header email di sini print F "To: blablabla....\n\n"; print F "Dear $name\n"; print F "Isikan pesan email di sini"; # atau baca saja dari file close(F); #tambahkan ke daftar push @bermasalah, $id; #perbaiki kesalahannya chmod 0711, $home; } } # kirimkan email ke admin, berisi daftar orang yang bermasalah open(F, "|$mailer admin\@students.bla.bla.bla"); print F "Dear admin\n"; print F "Inilah korban hari ini\n"; print F @bermasalah; close(F);
Semua yang ada di program
di atas sudah dijelaskan, kecuali fungsi push.
Fungsi push merupakan salah satu dari beberapa
fungsi yang berurusan dengan array. Fungsi yang lainnya adalah pop,
shift, unshift, dan splice.
push akan menambahkan sebuah elemen
ke array, seperti ini:
@agatha = ("Misteri di styles"); push @agatha, "Pembunuhan atas diri Roger Ackroyd"; push @agatha, "Membunuh itu gampang"; push @agatha, "Tirai";
Sekarang @agatha
akan berisi ("Misteri di styles", "Pembunuhan atas
diri Roger Ackroyd", "Membunuh itu gampang", "Tirai").
pop merupakan kebalikan dari push.
pop mengambil satu elemen dari
list. Melanjutkan contoh sebelumnya:
$buku = pop @agatha;
$buku sekarang berisi "Tirai". Fungsi push
dan pop bekerja memakai ujung kanan array. Kalau Anda ingin
bekerja di ujung kiri array, Anda bisa memakai shift dan unshift
(shift seperti pop, dan unshift seperti push).
Meskipun tidak ada hubungannya dengan program kita sekarang,
ada satu fungsi lagi yang berhubungan dengan array yaitu splice. Jika Anda
ingin memotong array, Anda bisa memakai fungsi ini. Anda bisa membaca
mengenai fungsi ini di manual perlfunc, atau kalau Anda cukup sabar,
saya akan membahasnya di edisi yang lain ketika kita
membutuhkan fungsi ini.
Sambil membuat program untuk melakukan
administrasi sistem di Linux, Anda sudah belajar bagaimana memanipulasi file di
Perl, bagaimana melakukan IPC sederhana, serta melakukan manipulasi array. Jadi ini adalah akhir dari tutorial Perl bagian kedua. Bulan
depan saya akan datang untuk pencinta sistem operasi
dari Microsoft dengan materi administrasi Windows 2000/XP dengan Perl.
sumber : http://www.master.web.id/mwmag/issue/03/content/tutorial-perl-2/tutorial-perl-2.html
Tidak ada komentar:
Posting Komentar