Tuesday, September 15, 2015

Counting All Word Occurrence using Perl

Saya akan menjelaskan salah satu penggunaan Perl yang paling sering yaitu menghitung kemunculan sebuah kata dalam file. Dalam contoh di bawah ini, kita akan mengambil seluruh kata unik yang muncul dalam sebuah file dan menghitung jumlah kemunculannya.

#!/usr/bin/env perl
use strict;
use warnings;

my %temp;
my $file = "input.txt";
open my $fh, '<', $file or die "File Cannot be Opened";
while (my $line = <$fh>) {
    chomp $line;
    foreach my $str (split /\s+/, $line) {
        $temp{$str}++;
    }
}

foreach my $str (sort keys %temp) {
    print $str." occurs ". $temp{$str}." times"."\n";
}

Pertama-tama, kita men-define variable hash %temp untuk menyimpan daftar seluruh kata-kata yang muncul. Tipe variable dalam Perl lebih jauh dapat dipelajari disini. Silahkan define juga nama file yang akan kita baca. Disini kita akan mengakses dokumen "input.txt".


my %temp;
my $file = "input.txt";
open my $fh, '<', $file or die "File Cannot be Opened";

Berikutnya, line ini akan melakukan looping untuk setiap baris dalam file "input.txt".
Untuk setiap line tersebut, kita akan melakukan splitting based on karakter spasi ' '. Untuk setiap kata yang dihasilkan dari proses splitting tersebut, akan disimpan ke dalam hash (key, value). Setiap kemunculan key dalam hash, value-nya akan ditambah 1.


while (my $line = <$fh>) {
    chomp $line; #hapus semua whitespace \n
    foreach my $str (split /\s+/, $line) {
        $temp{$str}++;
    }
}

Line berikut akan melakukan looping ke seluruh hash, lalu mencetak isinya:


foreach my $str (sort keys %temp) {
    print $str." occurs ". $temp{$str}." times"."\n";
}

Hasilnya adalah sebagai berikut:


10 occurs 1 times
12 occurs 1 times
15 occurs 1 times
19 occurs 2 times
20 occurs 1 times
26 occurs 1 times
3 occurs 1 times
35 occurs 1 times
42 occurs 1 times
7 occurs 2 times
9 occurs 1 times
Bill: occurs 1 times
Jeff: occurs 1 times
Jill: occurs 1 times
John: occurs 2 times
Linda: occurs 1 times
Pam: occurs 1 times
Phil: occurs 1 times
Sam: occurs 1 times
Sue: occurs 1 times
Team occurs 3 times

Selamat mencoba!

No comments:

Post a Comment