Sabtu, 31 Maret 2012

Konsep Perl

Perl merupakan singkatan dari Practical Extraction and Report Language, dibuat oleh Larry Wall. Secara umum, Perl bisa dikategorikan berada diantara bahasa pemograman tingkat tinggi (highlevel programming language) seperti pemrograman shell dan bahasa pemrograman tingkat rendah (low-level programming language) seperti  C, C++ atau Assembly. Program yang ditulis dengan bahasa pemrograman tingkat tinggi biasanya lambat dan sangat tergantung pada command yang disediakan oleh system operasi. Sebaliknya, program yang ditulis dengan bahasa pemrograman tingkat rendah cenderung lebih cepat, namun lebih sulit dalam menuliskannya, walau hampir semua hal dapat ditulis dengan bahasa pemrograman level ini. 

Perl dirancang untuk menjembatani ketimpangan diantara kedua level bahasa pemrograman di atas.  Bahasa ini kerap digunakan untuk menulis program web server seperti otomatisasi task di internet, mengupdate user account, posting newsgroup dan Iain-lain. Perl adalah bahasa interpreter sekaligus kompiler, artinya Perl akan mendeteksi setiap baris untuk mencari syntax error sebelum program dijalankan. 

Perl sangat cocok digunakan untuk menyelesaikan persoalan yang berkaitan dengan teks. Lebih kurang 90% dari kemampuan Perl memang dioptimalisasikan untuk menyelesaikan persoalan-persoalan yang berhubungan dengan teks, sementara sisanya, 10%, untuk menyelesaikan persoalan-persoalan diluar teks. 

Bagi para peneliti di bidang bioinformatika, Perl merupakan tool utama dalam melakukan pattern matching dari gen dalam DNA. Sebagaimana kita ketahui, gen merupakan rangkaian nucleotide yang secara formal disimbolkan menggunakan gabungan karacter A (adenine), T (thymine), C (cytosine), dan G (guanine).

Untuk mengetahui apakah terdapat gen tertentu dalam sebuah DNA, tentunya kita harus mencari pattern (yang merupakan kumpulan dari karakter-karakter A, T, C, G) di dalam DNA tersebut. Sebagai gambaran, perhatikan potongan program berikut ini:     

1 my $sequence = 'CTAATGGA';    
2 my $pattern = 'ATG';    
3 if($sequence =~ /$pattern/) { 
4 print "Pattern $pattern ditemukan dalam sequence $sequence\n";    
5 }     
6 else{    
7 print "Pattern $pattern tidak ditemukan dalam sequence $sequence\n";    
8

Penjelasan :
Pada baris ke 1 dan ke 2 di atas, sebuah skalar $sequence dengan nilai CTAATGGA dan skalar $pattern dengan nilai ATG dideklarasikan. Pengecekan apakah pattern ATG terdapat dalam sequence CTAATGGA dapat dengan mudah dilakukan menggunakan fasilitas pattern matching. Menggunakan binding operator, =~, seperti yang dilakukan pada baris ke 3 di atas, Perl memeriksa dengan sangat efisien apakah dalam skalar $sequence terdapat pattern ATG. Untuk contoh di atas, pattern ATG ada dalam sequence CTAATGGA, sehingga pernyataan "Pattern ATG ditemukan dalam sequence CTAATGGA" akan ditampilkan dilayar monitor. 

Sebenarnya, untuk contoh kasus di atas, bahasa C atau bahasa pemograman lainnya juga dapat digunakan. Namun akan lebih rumit dan panjang. Bila ditulis dengan bahasa C, sudah jelas kita harus berurusan dengan pointer dan iterasi yang memeriksa satu per satu apakah setelah karakter A dua karakter selanjutnya adalah karakter T dan G.  

Bagaimana pula bila kita ingin menggantikan semua karakter A dalam sebuah sequence DNA menjadi karakter T, karakter C menjadi G, karakter G menjadi C, dan karakter T menjadi A? Dengan bahasa C, salah satu solusinya adalah seperti program sederhana berikut ini:    

1 char sequence[32] = 'CTAATGGA';    
2 char *p = sequence;     
3 for (; *p != '\0';p++){    
4 if (*p == 'A')    
5 *p = 'T';    
6 else if (*p == 'C')    
7 *p = 'G';    
8 else if (*p == 'G')    
9 *p = 'C';    
10 else     
11 *p = 'A';    12    }

Lumayan, tidak begitu sulit juga. Namun yang perlu kita pahami disini adalah, untuk kasus-kasus manipulasi teks seperti kedua contoh di atas, menggunakan Perl jauh lebih mudah. Fungsi tr atau translate dari Perl dapat mengubah setiap karakter yang dimaksud dengan sangat mudah. 


Fungsi tr menerjemah setiap karakter yang ditemukan di menjadi karakter yang bersesuaian posisinya di bagian . Jadi untuk contoh kasus kedua ini, hanya dengan satu pernyataan saja, perubahan karakter dapat diselesaikan.    $sequence =~ tr/ACGT/TGCA/; Bila pada awalnya sequence DNA adalah CTAATGGA, maka dengan pernyataan di atas, sequence DNA berubah menjadi GATTACCT.

Perl sangat powerfull dalam memanipulasi teks dan file, termasuk dalam membuat CGI (Common Gateway Interface). Selain itu, Perl juga merupakan tool yang sangat tepat untuk merancang prototype suatu algoritma. Benar memang kalau Perl bukanlah tool untuk semua hal. Perl bukanlah bahasa pemograman yang tepat untuk merancang kernel, tidak pula untuk merancang program client-server yang membutuhkan penanganan thread dan memori poll yang efisien. 

Salah satu hal yang membuat Perl populer adalah karena Perl gratis. Tidak hanya pada level biner, kode sumber Perl juga dapat diperoleh tanpa membayar apapun. Selain itu, Perl tidak hanya bisa diterapkan pada sistem operasi UNIX, tapi juga pada:

1. MS-DOS
2. Windows 95
3. Windows NT
4. OS/2
5. Macintosh

1 komentar:

Unknown mengatakan...

bagus :)
kunjungi blog gua juga yahh

http://www.fundunk.co.cc/