Bertemu Perl kembali

Setelah hampir setahun berpisah, akhirnya ada juga kejadian yang mengharuskan memakai Perl kembali. Semua bermula dari sebuah pekerjaan sederhana : melakukan konversi dari lembar kerja Excel ke berkas CSV. Deskripsi tugasnya dapat ditulis sebagai berikut :

  • Setiap berkas memiliki sembilan buah nilai yang dipisahkan oleh karakter spasi,
  • Untuk mengubah berkas menjadi berkas CSV, setiap karakter spasi harus dirubah menjadi karakter koma (,),
  • Nama file memiliki format n8[nomor berkas] dengan nomor berkas dari 0 – 300,
  • Pada bagian awal dokumen, disisipkan sembilan nama variabel.

Tugas yang sederhana memang. Kesulitannya terdapat pada banyaknya berkas yang harus dikonversi. Total terdapat tiga ratus berkas. Misalkan untuk melakukan konversi satu berkas diperlukan waktu dua puluh detik (dengan menggunakan notepad), diperlukan waktu selama seratus menit untuk memroses seluruh data tersebut, belum ditambah waktu bengong:mrgreen:.

Untuk menghemat waktu, sepertinya pekerjaan tersebut dapat diselesaikan dengan program Perl sederhana. Kenapa Perl? Karena Perl memiliki kemampuan yang teruji di bidang pemrosesan dokumen. Selain itu, kebetulan di komputer ada contoh-contoh program Perl yang dibuat di masa lalu. Setelah perjuangan sepuluh menit sambil melihat-lihat program-program lama (teutama di bagian regex), terciptalah program sederhana yang kurang elegan ini :

$i = 0;
while($i <= 300){
    $filename=$i;

    open (IN, "file".$filename.".xls");
    open (OUT, ">n8".$filename.".csv");
    print OUT "x1,x2,x3,x4,x5,x6,x7,x8,y\n";
    while($line = <IN>)
    {
         chomp($line);
         $line=~s/\s/,/gi;
         print OUT "$line\n";
    }
    close(IN);
    close(OUT);
    $i = $i + 1;
}
 

Dengan demikian, pekerjaan yang tadinya memerlukan waktu 100 menit untuk diselesaikan, dapat diselesaikan dalam waktu 10 menit:mrgreen:. Pelajaran yang dapat diambil adalah : Simpan contoh-contoh program sebagai sontekan di masa yang akan datang:mrgreen:.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s