Friday, 21 June 2013

subroutine & Perl basic part 3

pada perl dikenal beberapa statement regex untuk mengolah string. diantaranya akan saya bahas disini adalah match, subtitution dan translate

match
match adalah regex yang berguna untuk mencocokan kata pada suatu variable yang kita cari. outputnya dapat berupa boolean *1 true dan 0 false*, atau berupa pencocokan karakter untuk dimasukan kedalam variable. penggunaan syntaxnya adalah m/regex/
contoh :


boolean

sub belajar {
my $a = "ayo belajar subroutine";
my $boolean = ($a =~ m/belajar/);
return $boolean;
}

subroutine diatas akan memberikan output return berupa 1, karena pada var $a terdapat kata belajar yang cocok dengan regex yang ditulis.

sub belajar {
my $a = "ayo belajar subroutine";
my $boolean = ($a =~ m/males/);
return $boolean;
}

subroutine diatas akan memberikan output berupa 0, karena pada var $a tidak terdapat kata males seperti yang diminta pada regex

pencocokan karakter

sub belajar {
my $a = "ayo belajar subroutine";
my ($arg1, $arg2, $arg3) = ($a =~ m/(\w+)\s(\w+)\s(\w+)/);
return $arg1;
}

subroutine diatas akan memberikan output berupa "ayo", karena pada sub diatas $arg1 merupakan variable pertama yang dipakai untuk menyimpan (\w+) yang cocok di regex m/ / maka variable akan berturut2 berisi :

$arg1 = ayo
$arg2 = belajar
$arg3 = subroutine

operator
pada match, kita bisa menggunakan beberapa operator penting untuk memberi informasi regex yang kita cari, operator ini ditaruh di sebelah kanan regex match.

i membuat regex menjadi case insensitive
m menspesifikasi jika string memiliki baris baru, tanda ^ dan $ bisa dipakai
o memeriksa string hanya sekali
s membolehkan tanda . untuk cocok dengan newline
x memperbolehkan penggunaan whitespace untuk mempermudah penulisan
g mencari smua yang cocok secara global
cg terus mencari bahkan jika secara global gagal

contoh :

sub belajar {
my $a = "ayo belajar subroutine";
my $boolean = ($a =~ m/BELAJAR/i);
return $boolean;
}

akan memberikan return value berupa angka 1 walaupun tidak ada kata BELAJAR namun karena diberikan operator i, kata belajar menjadi cocok dengan kata BELAJAR, karena menjadi tidak case sensitive.

subtitution
subtitution adalah statement regex yang berfungsi untuk mereplace sebuah kata dengan kata lainnya yang kita inginkan. syntax penggunaannya adalah s/argument/argument/ dengan argumen awal adalah argumen yang dicari dan argumen akhir adalah argumen pengganti argumen awal.
contoh :

sub belajar {
my $a = "ayo belajar macro";
my $a =~ s/macro/subroutine/;
return $a;
}

pada subroutine diatas kata "ayo belajar macro" akan berubah menjadi "ayo belajar subroutine" karena kata macro cocok dengan regex dan pada statement diatas macro akan diganti dengan subroutine.

operator
pada subtitution, kita bisa menggunakan beberapa operator penting untuk memberi informasi regex yang kita cari, operator ini ditaruh di sebelah kanan regex subtitution.

membuat regex menjadi case insensitive
menspesifikasi jika string memiliki baris baru, tanda ^ dan $ bisa dipakai
memeriksa string hanya sekali
membolehkan tanda . untuk cocok dengan newline
memperbolehkan penggunaan whitespace untuk mempermudah penulisan
mencari smua yang cocok secara global

mengganti seolah-olah itu adalah perl expression, dan menggunakan value awal sebagai teks pengganti

contoh :

sub belajar {
my $a = "ayo belajar macro";
$a =~ s/Macro/subroutine/i;
return $a;
}

pada subroutine diatas tidak ditemukan kata Macro, namun karena diberi operator i maka kata macro juga cocok dengan Macro, sehingga tindakan replace tetap dapat dilakukan.

translate
translate merupakan statement regex yang sangat mirip dengan subtitution, namun melakukannya per karakter kata. penggunaan syntaxnya dengan menuliskan tr/karakter/karakter/ dengan karakter di kiri akan di ganti dengan karakter dikanan.
contoh :

sub belajar {
my $a = "hahaha";
$a =~ tr/a/i/;
return $a;
}

pada subroutine diatas karakter a akan ditranslate menjadi i, sehingga $a akan berubah menjadi "hihihi"

sub belajar {
my $a = "hawhawhaw";
$a =~ tr/ahw/owk/;
return $a;
}

pada subroutine diatas karakter a akan diubah menjadi o, h menjadi w, dan w menjadi k, sehingga setelah di translate kata "hawhawhaw" akan berubah menjadi "wokwokwok"

sub belajar {
my $a = "ayo belajar subroutine";
$a =~ tr/a-z/A-Z/;
return $a;
}

pada subroutine diatas, karakter a-z akan diubah menjadi huruf besar, sehingga "ayo belajar subroutine" akan berubah menjadi "AYO BELAJAR SUBROUTINE"

operator modifier
pada translate, kita bisa menggunakan beberapa operator penting untuk memberi informasi regex dan memodifikasi hasil yang kita cari, operator ini ditaruh di sebelah kanan regex translate.

d menghilangkan karakter selain yang ditemukan
s menghilangkan huruf yang sama bersebelahan

contoh :

my $a = "ayo belajar subroutine";
$a =~ tr/a-z/ABCDE/d
return $a;
}

pada subroutine diatas, karakter ABCDE hanya berjumlah sama dengan a-z jika diurutkan menjadi abcde, namun karena fghijk dst tidak memiliki pasangan pada ABCDE  maka karakter tersebut akan dihapus, karena kita memakai operator d. maka "ayo belajar subroutine" akan berubah menjadi "A BEAA UBE"

No comments:

Post a Comment