Pages

Tuesday, October 30, 2012

Bahasa Pengaturcaraan Perl

Perl (Practical Extraction and Reporting Language) ialah bahasa pengaturcaraan terjemahan. Bahasa pengaturcaraan amnya ada dua jenis - yang terkompil (misalnya C, Java dll) dan yang diterjemah (Perl, Python dll). Bahasa terkompil dan bahasa terjemahan kedua-duanya melalui proses penterjemahan (bahasa pengaturcaraan kepada bahasa mesin) sebelum boleh dilaksanakan. Bezanya ialah dari segi proses pelaksanaan program.

Semua atur cara bahasa terkompil akan dikompil kepada fail berbentuk program. Maka proses mengkompil hanya perlu berlaku sekali sahaja kerana pengkompil tidak diperlukan untuk melaksanakan program. Manakala bahasa diterjemah akan sentiasa berada dalam bentuk skrip (kod sumber atau bahasa pengaturcaraan). Setiap kali hendak dilaksakanan, ia perlu diterjemah dan dilaksanakan oleh pengkompil (penterjemah). Maka atur cara bahasa terjemahan hanya boleh dilaksanakan dengan kehadiran pengkompil. (Atur cara bahasa terjemahan biasanya dipanggil skrip.)

Perl boleh digunakan bagi tujuan memformat dan memproses data berbentuk teks. Misalnya fail HTML (muka sesawang) boleh diformat semula ke dalam bentuk teks biasa dengan cara mengekstrak kandungan data teksnya dan mencetak semula data tersebut ke dalam fail teks tanpa HTML. Perl juga boleh digunakan bagi memuat turun kandungan pangkalan data dan mencetak laporan, membina laman sesawang (Common Gateway Interface atau CGI), mengurus tadbir pelayan, dan membina antaramuka grafik (GUI) sesebuah aplikasi.

Berikut adalah contoh skrip Perl yang mudah, iaitu untuk mencari dan menyenaraikan kedudukan nama 'Mohd Yunus' yang terkandung dalam sebuah fail teks 'dokumen.txt' ('Mohd' dan 'Yunus' mesti berada dalam baris yang sama):

use strict;

my $kata = 'Mohd Yunus';        # perkataan yang dicari
my $infile = "dokumen.txt";     # nama fail input.

open(INFILE, "<$infile") or
   die("Fail input '$infile' tidak dapat dibaca. $!");
while($_ = <INFILE>) {
    if(/$kata/) {
        print "'$kata' dikesan pada baris $.\n";
    }
}
close INFILE;
Contoh 1

Pengaturcaraan Perl agak sukar bagi pengatur cara yang baru mempelajarinya. Namun jika sudah biasa, Perl sebenarnya mudah digunakan dan ada masanya sangat berguna. Ia juga (i) bahasa yang sangat fleksibel, (ii) cukup mantap untuk melakukan tugas pemprosesan yang kompleks (walaupun Perl bukan pilihan untuk program masa-nyata.), (iii) menjadi pilihan kepada pentadbir sistem dan pembangun aplikasi sesawang, (iv) mendapat sokongan peminat atur cara sumber terbuka (open-source) dan (v) mempunyai sumber pustaka yang besar dan komprehensif (CPAN.org). Namun Perl lebih dikenali kerana mula-mula memperkenalkan operator ekspresi regular (regular expression) dalam bahasa atur cara, sehinggakan notasi standard Perl-compatible regular expression sering dijadikan rujukan oleh pengkompil dan enjin-enjin ekspresi regular yang terkemudian daripadanya.

Bagi yang ingin menggunakan Perl, boleh muat turun penterjemah Perl daripada Perl.org. Penterjemah diperlukan untuk melaksana skrip Perl. Pastikan penterjemah yang dimuat turun sesuai dengan sistem pengoperasian yang anda gunakan. Bagi pengguna sistem pengoperasian Linux dan Unix, tidak perlu pasang lagi kerana Perl sudah disediakan.

Ada dua kaedah melaksanakan skrip Perl (selain digunakan sebagai aplikasi CGI). Kaedah pertama ialah dengan membina skrip Perl dalam bentuk fail (yang diberi sambungan *.pl atau *.plx). Kemudian melaksanakan program penterjemah Perl dengan fail skrip sebagai parameter. Misalnya skrip berikut ditulis dalam fail skrip 'hello.pl',

print ("Hello dari Perl\n");

Skrip ini boleh dilaksanakan dengan menggunakan arahan berikut pada prom arahan (contoh berikut untuk prom sistem Windows),

c:\perl hello.pl

yang akan menghasilkan output berikut:

Hello dari Perl

Kaedah kedua ialah dengan menggunakan Perl sebaris (one-liner). Pelaksanaan Perl sebaris tidak memerlukan kita membina fail skrip kerana boleh dilaksanakan terus pada prom arahan. Skrip di atas boleh dilaksanakan terus pada prom arahan seperti berikut (dengan penanda pilihan -e),

perl -e "print (\"Hello dari Perl\n\")"

yang memberikan output yang sama. Perl sebaris hanya digunakan bagi atur cara yang ringkas. Namun ada juga atur cara Perl yang nampak seolah kompleks tetapi boleh dipadatkan menjadi Perl sebaris. Misalnya Contoh 1 di atas sebenarnya boleh dipadatkan menjadi Perl sebaris berikut:
perl -e "print grep { /Mohd Yunus/ } <>"  dokumen.txt
Atau
perl -lne "print if /Mohd Yunus/"  dokumen.txt

(Lihat contoh-contoh lain 'Perl sebaris')

Maklumat yang dipaparkan ini hanyalah pengenalan ringkas mengenai Perl. Maklumat lanjut berkenaan Perl boleh dirujuk di Perl.org.



Thursday, October 18, 2012

Perl one-liner ( untuk Perl-geek sahaja :) )

Semalam ada seorang kawan sefakulti mengemukakan satu masalah -
Bagaimanakah caranya menukar data yang terdiri daripada berbilang baris, kepada satu rentetan mengandungi data-data tersebut yang hanya diselangi dengan koma (tanpa penyuntingan)?

Seperti berikut: 

aaaaa
bbbbb
ccccc

kepada 

aaaaa,bbbbb,ccccc

Satu cara yang boleh digunakan ialah dengan menggunakan fungsi dlm MS-Excell (diperoleh daripada sumber di Youtube, terima kasih Dr. Alfian FSKTM).

Tetapi yang terlintas di fikiran saya ialah dengan menggunakan Perl one-liner. Perl one-liner ialah pembentukan skrip bahasa Perl yang ringkas dan mampu dilaksanakan secara terus menerusi prom arahan atau baris arahan sahaja (berbanding menulis di dalam fail skrip Perl, *.pl)

Skrip yang boleh digunakan adalah seperti berikut: ('multilines.txt' mengandungi data input, dan output akan disimpan dalam fail 'output.txt' tanpa mengubah kandungan 'multilines.txt')

perl -e "print(join(',', map{chomp; $_;} <>))" multilines.txt > output.txt

Skrip setara (tanpa kurungan '()'):

perl -e "print join ',', map{chomp; $_;} <>" multilines.txt > output.txt

Skrip di bawah memperoleh hasil yang sama, justeru boleh digunakan sebagai skrip alternatif (sebahagiannya telah diperbaiki oleh Dr. KA, FSKTM):

perl -e "$_ = join (',', <>); s/\n\r?//g; print" multilines.txt > output.txt

Berikut adalah contoh perlaksanaannya dalam prom arahan Windows (arahan 'more' sekadar memperlihatkan kandungan fail input, dan output yang terhasil):

C:\>more multilines.txt
xxxx
yyyy
zzzz

C:\>perl -e "print(join(',', map{chomp; $_;} <>))" multilines.txt > output.txt

C:\>more output.txt
xxxx,yyyy,zzzz

P/s: Bagi yang tidak biasa atau baru menggunakan Perl, pengguna Windows OS kena install penterjemah Perl dahulu (Unix dan Linux sudah ada versi Perl yang dipasang).


[ Kemaskini: 19 Okt 2012 ]

Semua perkataan 'Perl-liner' diubah. Istilah yang sebenar ialah 'Perl one-liner'.


[ Kemaskini: 9 Sept 2024 ]

Sebenarnya 'Perl-liner' atau 'Perl one-liner' sama saja. Saya gelar 'Perl-baris'.

Alternatif lain (penyelesaian masalah):

perl -e "print join ',', map{s/\s+$//; $_;} <>" multilines.txt > output.txt


.

Wednesday, September 26, 2012

Apa maksud 'muat naik' / 'muat turun' ?


Sumber : PRPM DBP - Kamus Dewan Edisi Empat
Muat turun - (Komp) tindakan memindahkan fail dr stesen komputer utama ke stesen komputer peng­guna melalui talian rangkaian;
Muat naik - (Komp) tindakan memindahkan fail dr stesen komputer pengguna ke stesen kom­puter utama melalui talian rangkaian;

Sumber : Wikipedia (http://ms.wikipedia.org/wiki/Muat_turun_dan_muat_naik)
Muat turun (Inggeris: download) dan muat naik (Inggeris: upload) dalam teknologi maklumat ialah istilah yang digunakan untuk menggambarkan proses pengalihan fail antara dua komputer atau sistem serupa lainnya.

Muat turun adalah proses menerima data dari sebuah sistem seperti pelayan web, pelayan FTP atau sistem serupa lainnya.

Muat naik adalah proses mengirim data dari komputer peribadi ke suatu sistem seperti pelayan web, pelayan FTP atau sistem serupa lainnya.

Kenapa saya membuat masukan blog berkenaan muat naik / muat turun? Kebelakangan ini saya mendapati terdapat kesalahan pengunaan istilah-istilah 'muat naik' dan 'muat turun' di kalangan masyarakat yang berbahasa Melayu (bahkan dalam akhbar berbahasa Melayu utama pun turut tersalah guna dua istilah ini!), di mana istilah muat-turun kerap digunakan untuk maksud menyalin atau mengirim data ke komputer pelayan, sedangkan itu maksud muat-naik.

Oleh itu berhati-hatilah dalam menggunakan istilah-istilah ini. Fahamilah maksudnya, dan gunakan dengan tepat supaya kita tidak tersalah menerima dan menyebar maklumat!

'..., yang baik itu budi, yang indah itu bahasa'


Thursday, April 19, 2012

Hubungkait 5-if

Saya mendapati terdapat hubungkait antara 4-if, di mana hasil tambahnya menghasilkan '-if' yang ke-5:

Imaginatif
+
Kreatif
+
Inisiatif
+
Inventif
=
Impresif



p/s: Idea asal formula ini tercetus setelah terbaca formula ('imagination' + 'creation' -> 'innovation') yang diselitkan di dalam buku 'Imagination First'. Link

Wednesday, April 11, 2012

Menghargai diri

Kadang-kadang apabila kita melihat orang lain, pernah tak terlintas di fikiran kita, "Kan bagus kalau aku macam dia..."? Pada pandangan kita, orang yang kita pandang itu tentunya 'lebih baik' dalam sesuatu aspek. Contohnya kita merasakan orang itu lebih hebat daripada kita, lebih pandai, lebih kaya, lebih rileks dan pelbagai macam 'kelebihan' yang kita rasa ada pada orang itu. Mungkin juga kita memiliki 'kekurangan' tertentu, yang membuatkan kita rasa lebih bertuah menjadi orang lain.

Namun, di sebalik rasa 'cemburu' kita pada seseorang, mungkin ada baiknya kita melihat kelebihan yang ada pada kita dahulu. Ini kerana Allah S.W.T. itu Maha Kaya, Maha Mengetahui dan Maha Berkuasa. Jadi apa saja yang dicipta oleh Allah S.W.T. itu ada hikmah dan kepentingannya yang tersendiri. Termasuklah kita. Jadi mustahil kalau kita ini tidak mempunyai apa-apa pun yang melebihkan kita daripada ciptaan Allah yang lain!

Tapi apa kelebihan diri kita? Mungkin kita akan kata, "Mana kelebihan aku? Semuanya orang lain ada". Soalnya siapa diri kita yang hendak menilai kelebihan dan kekurangan diri? Betulkah semua yang kita nampak pada diri kita itu kekurangan? Atau mungkinkah ia sebenarnya suatu kelebihan? Belum tentu 'kekurangan' kita itu suatu kekurangan. Sebaliknya, ia mungkin suatu kelebihan yang kita tidak sedar. Bahkan ada masanya sesuatu kekurangan itu boleh diubah menjadi kelebihan bagi seseorang yang mempunyai semangat dan sikap kreatif yang tinggi.

Sebagai contoh, kita mungkin seorang golongan OKU kerdil. Orang kerdil memang nampak berbeza daripada insan lain kerana 'tidak cukup tinggi' dan nampak seperti kanak-kanak walaupun usianya sudah 50 tahun. Tapi adakah itu memang suatu kelemahan/kekurangan? Bagi generasi 90-an ke atas, mungkin tidak kenal siapa 'Pakcik Jamal'. Allahyarham pakcik Jamal pernah jadi ikon kanak-kanak sekitar era 80-an dan popular dengan rancangan 'Mini Parlimen' terbitan RTM. Hakikatnya beliau golongan OKU kerdil. Jika beliau mampu menjadi popular, adakah itu suatu kekurangan? Pakcik Jamal memang pandai menambat hati dan melayan kanak-kanak.

Begitu juga Allahyarham Ibrahim 'Pendek', mendiang Ayappan dan Param. Mereka adalah golongan artis yang terkenal di Malaysia semasa penglibatan mereka dalam industri hiburan. Adakah ini suatu kekurangan? Dalam situasi mereka, mereka sebenarnya telah menggunakan 'kekurangan' mereka untuk menjadi popular, sebab mereka mudah menambat hati peminat dengan gaya dan telatah yang 'comel' dan melucukan!

Dalam bidang penyelidikan, kesedaran terhadap kelebihan diri adalah penting. Kenapa? Sebabnya bidang penyelidikan melibatkan persaingan. Rata-rata individu yang terlibat adalah dalam golongan cerdik pandai. Tapi pencapaian masing-masing berbeza. Ada masanya seseorang berjaya menemui penemuan baharu, sedangkan yang lain mungkin masih belum memperolehi kejayaan atau keputusan yang diharapkan. Ada pula yang menghasilkan pelbagai idea dan projek, dan ada pula yang masih belum mampu mengemukakan apa-apa.

Orang yang 'kalah' akan rasa putus asa atau cemburu dengan kejayaan 'pesaing'. Dia mungkin rasa kecewa kerana tidak mampu mencapai prestasi seperti orang lain yang 'lebih berjaya'. Mungkin juga dia rasa rendah diri sebab tidak sebijak orang lain. Tidak mustahil, mungkin yang 'kalah' ini sudah terfikir untuk mensabotaj atau mengkhianati orang lain yang 'berjaya'! Tapi sebenarnya rezeki itu tidak semuanya sama. Allah S.W.T. sudah tetapkan rezeki setiap orang. Kenalah sabar dan terus berusaha. Kenal pasti apa yang kita mampu lakukan atau miliki dan manfaatkan sebaik-baiknya, kerana itulah sebenarnya kelebihan kita.

Jadi muhasabah dan renungkanlah diri sendiri. Bersyukur dengan apa yang kita miliki, dan janganlah asyik merungut tentang kelemahan diri. Sudah sampai masanya kita menghargai 'kelebihan' diri kita. Cuma, janganlah terlebih 'menghargai diri' hingga jadi sombong pula! Manfaatkanlah kelebihan diri kita untuk kebaikan diri dan masyarakat.

Sumber foto: http://roblovegreen.blogspot.com/2011/09/looking-in-mirror-what-do-you-see.html