Function di Perl

Hampir satu bulan saya tidak meng-update blog dan hari ini kebetulan saya lagi menulis beberapa skrip untuk keperluan kantor.

Beberapa bagian saya sudah lupa karena lama tidak menggunakan skrip tersebut. Skripnya adalah bagaimana menulis fungsi dan memanggil dalam program.


=head1 NAME

Lib::Function.pm - Perl module that will be used to populate all function

=head1 SYNOPSIS

B<use Lib::Function.pm>

=head1 LICENSE

This code is copyright by Askari Azikin <I<askari.azikin@ericsson.com>>,
This program comes with ABSOLUTELY NO WARRANTY.
You are free to redistribute this code under the terms of the GNU
General Public License, version 2 or later.

=head1 AUTHOR

Askari Azikin <askari.azikin@ericsson.com>

Copyright (C) 2017

Revision History:

* Apr 16, 2017 Askari Azikin First Draft

=cut

package Lib::Function;

use strict;
use warnings;

sub new
{
     my $class = shift;
     my $self = {
            outfile => shift,   # to store scalar variable
            result_array => [], # to store array variable
     };
     bless ($self, $class);
     return $self;
}

sub write_to_file_format1
{
    my ($self, $outfile, @result) = @_;
    $self->{outfile} = $outfile if defined($outfile);
    push (@{$self->{result_array}}, @result);

    open (FH, '>', $self->{outfile}) or die "open FH filehandle failed $!";
    for (@{$self->{result_array}})
    {
        print FH $_;
    }
    close(FH);
}

Untuk memanggil fungsi di atas dapat menggunakan skrip berikut.


$call_func->write_to_file_format1($result_file, @result);

 

Installing CPAN module without root access for Solaris OS

Manual Installation

In order to install CPAN modules without root access on Solaris OS, The following steps can be used:

1. Create lib/perl5 in your home directory (my prefer shell is bash so I change to bash)

 
> bash
$ pwd
/home/easkazi 
$ mkdir -p lib/perl5

2. Download/copy the CPAN module source from search.cpan.org and store them in the home directory e.g in CPAN directory.

$ mkdir CPAN
$ ls -ltr
Tk-ToolBar-0.12.tar.gz
Tk-804.034.tar.gz 
Tk-Splashscreen-1.0.tar.gz 

3. Unzip those CPANs by using the following command:

$ cd CPAN
$ tar -zxvf Tk-ToolBar-0.12.tar.gz
$ cd Tk-ToolBar-0.12

4. Install CPAN modules

 
$ /usr/perl5/bin/perlgcc Makefile.PL LIB=~/lib/perl5 PREFIX=~/lib/perl5
$ /usr/bin/gmake MAKE=/usr/bin/gmake
$ /usr/bin/gmake MAKE=/usr/bin/gmake test
$ /usr/bin/gmake MAKE=/usr/bin/gmake install

5. Add the new CPAN library so that Perl can find installed modules in the new library.

 
$ PERL5LIB=$PERL5LIB:/home/easkazi/lib/perl5
$ export PERL5LIB

The above is a temporary solution so when we log off and log on again to the system then shell prompt will not recognize that libraries. For this case, we have to add the following line in our scripts:


use lib '/home/easkazi/lib/perl5'

6. Ensure the CPAN module can be used by Perl

 
$ perl -e "use Tk::ToolBar"

The original source of this tutorial from http://twiki.org/cgi-bin/view/Codev/SolarisInstallCookbookPerlModules

Penulisan Fungsi di Python dan di Perl

Fungsi di bahasa pemrograman berfungsi untuk menghindari penulisan kode program yang berulang sehingga untuk melakukan sebuah fungsi atau perintah tertentu cukup dituliskan satu kali saja.

Berikut penulisan fungsi di Python dan di Perl:

Di bahasa Python fungsi selalu diawali dengan kata ‘def’

#!/usr/bin/python

def get_user_name (first_name,last_name):
    full_name = first_name + ' ' + last_name
    return full_name.title() # or return full_name

my_user_name = get_user_name('Askari','Azikin')
print (my_user_name)

Sedangkan di bahasa Perl, fungsi selalu diawali dengan kata ‘sub’. karakter ‘$$’ menunjukkan bahwa fungsi tersebut akan menerima inputan sebanyak dua variabel skalar. karakter ini bersifat opsional saja sehingga bisa saja tidak dituliskan. Sedangkan ‘@_’ bisa juga diganti dengan ‘shift’ dimana keduanya untuk menerima masukan/input untuk selanjutnya diproses di dalam fungsi tersebut.

#!/usr/bin/perl -w

sub get_user_name ($$)
{
   my ($first_name, $last_name) = @_;
   my $full_name = "$first_name $last_name";
   return $full_name;
}

my $user_name = get_user_name ('Askari', 'Azikin');
print "$user_name\n";

Python untuk Perl Programmer

Karena kebutuhan untuk big data, saya mulai mendalami Python namun Perl tentu saja masih menjadi bahasa favorit saya.

Mudahan-mudahan ada kesempatan untuk membuat buku dengan judul ‘Python untuk Perl Programmer’. Berikut perbandingan kode program untuk menghasilkan keluaran yang sama.

Perl

Python

Harus sering-sering memantau statistik

Sebagai seorang engineer di dunia telekomunikasi terkadang kita harus sering memantau statistik untuk memastikan bahwa segala aktifitas perubahan yang dilakukan di perangkat telko tersebut tidak memberikan impact terhadap end user. Sebuah perangkat telekomunikasi harus memiliki tingkat availability 99.99 %.

Ini adalah salah satu perangkat software yang saya buat bersama dua orang kawan untuk menunjang aktifitas pekerjaan saya selama ini. Kami menggunakan Perl, expect, laravel, dan highcharts untuk menghasilkan software seperti berikut.

Sangat membantu karena penulis dapat memastikan tidak ada masalah dengan perangkat yang sedang kami modifikasi. Tidak terbayang berapa banyak orang akan komplain ke kami jika terjadi masalah setelah perubahan yang dilakukan ternyata membawa dampak pada sistem. Tentu saja revenue buat operator akan hilang dan kepercayaan masyarakat terhadap sebuah operator telekomunikasi juga akan berkurang dan beralih berlanggan ke operator lain.

Bahasa Pemrograman Python

Penulis sudah membeli buku bahasa pemrograman Python ini tapi belum sempat menamatkan isinya. Secara konsep mirip-mirip dengan Perl atau bahasa pemrograman lain. Penulis sendiri sih meyakini bahwa menulis kode program Python seharusnya lebih mudah dibanding dengan bahasa lain seperti Perl, Java, Erlang, dll.

Sayangnya belum ada program Python yang penulis hasilkan karena masih lebih tertarik menyelesaikan seluruh problematika komputasi dengan bahasa Perl.

Photo di bawah sebenarnya buat gaya-gaya saja karena baru beberapa lembar halaman yang berhasil saya baca. Photo ini penulis upload sebagai bahan pemberi semangat bagi diri penulis dan bagi orang lain yang mungkin belum memiliki semangat untuk belajar bahasa pemrograman.

@Marine Terrace, Singapore 25/05/2017

Menemani anak tidur sambil melanjutkan koding

Malam ini sambil menemani anak pertama saya tidur, saya mencoba melanjutkan kode program yang belum terselesaikan juga. Di jam kerja pastinya saya tidak bisa melakukan koding karena pekerjaan utama yang harus diselesaikan. Kode program yang sedang penulis kerjakan ini sebenarnya saling berkaitan walaupun sifatnya sebagai penunjang saja.

Target penulis, kode program ini harus terlesaikan seluruhnya sebelum akhir tahun sehingga bisa benar-benar bermanfaat untuk proses monitoring jaringan. Selama ini saya melakukannya secara parsial sesuai kebutuhan saja, nah target akhirnya adalah keseluruhan statistik jaringan dapat termonitor secara otomatis.

Satu hal yang menjadi kendala adalah larangan untuk menyimpan server yang tidak teregistrasi oleh pihak operator di sini. Untuk mendapat izin tentu saja tidak mudah dan belum tentu di-approve. Jadilah program ini berjalan di laptop penulis dan setiap terkoneksi ke jaringan operator maka program akan bekerja secara otomatis.