Perl is a dynamic programming language created by Larry Wall and first released in 1987. Perl borrows features from a variety of other languages including C, shell scripting (sh), AWK, sed and Lisp.
Structurally, Perl is based on the brace-delimited block style of AWK and C, and was widely adopted for its strengths in string processing, and lack of the arbitrary limitations of many scripting languages at the time.
Perl is a general-purpose programming language originally developed for text manipulation and now used for a wide range of tasks including system administration, web development, network programming, GUI development, and more.
The language is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal).[6] Its major features include support for multiple programming paradigms (procedural, object-oriented, and functional styles), automatic memory management, built-in support for text processing, and a large collection of third-party modules.
The overall structure of Perl derives broadly from C. Perl is procedural in nature, with variables, expressions, assignment statements, brace-delimited code blocks, control structures, and subroutines.
Para pengguna distro Trustix Secure Linux aka TSL tentu sudah tidak heran dengan konsep minimal TSL. Terutama untuk TSL 2.0 dan TSL 2.1.
Beberapa aplikasi atau library harus dikompile sendiri untuk memenuhi syarat aplikasi baru yang akan diinstall. Hal ini tentunya tidak menjadi masalah bila aplikasi tersebut sudah dipaketkan dalam bentuk RPM. Hanya saja paket rpm di TSL hanya untuk aplikasi dasar, sedangkan untuk aplikasi tambahan tidak.
Demikian juga untuk PERL. Di TSL, paket rpm PERL yang tersedia hanya untuk basic PERL. Belum mencakup modul-modul yang lain.
Tidak seperti RedHat/Fedora, Mandrake, Suse atau distro yang lain.
Untung-nya module-module perl dapat didonlot dan diinstall dengan mudah dengan bantuan CPAN.
Untuk menginstall beberapa modul perl dapat mempergunakan fasilitas CPAN.
Aplikasi bantu yang diperlukan untuk instalasi adalah
ftp gpg /usr/bin/gpg gzip /usr/bin/gzip lynx make /usr/bin/make ncftpget pager /usr/bin/less shell /sbin/bash tar /bin/tar unzip wget /usr/bin/wget
Kolom dikiri menunjukkan nama aplikasi kolom dikanan menunjukkan path dari aplikasi tersebut.
Beberapa aplikasi diatas tidak semuanya bersifat wajib. Yang wajib harus ada adalah make dan tar.
Sedangkan aplikasi untuk mendonlot source wajib harus satu. Pilihan yang tersedia adalah ncftp, ftp, lynx dan wget.
Disini dipilih aplikasi wget karena akan kelihatan progress donlot, untuk aplikasi yang lain pathnya dapat dihapus atau diarahkan ke tempat yang salah sehingga tidak bisa dieksekusi.
Untuk instalasi bisa memakai fasilitas CPAN.
File yang akan diinstall akan dicek dahulu untuk mendapat versi terakhir, lalu diperiksa di cache local, bila tidak baru di-donlot dari internet.
CPAN sendiri merupakan modul didalam perl, untuk meng aktifkan CPAN dapat dengan perintah dibawah.
root@azzura root# perl -MCPAN -eshellBila ini adalah pertamakali masuk kedalam CPAN, maka harus mengisi beberapa konfigurasi. Bila konfigurasi sudah selesai maka akan muncul promt
cpan>
Untuk keluar dari cpan ketik exit.
cpan> exit Lockfile removed. root@azzura root#
Sesudah konfigurasi bila masuk lagi kedalam CPAN, maka sudah tidak lagi ditanya masalah konfigurasi.
root@azzura root# perl -MCPAN -eshell cpan shell -- CPAN exploration and modules installation (v1.7601) ReadLine support enabled cpan>Untuk melihat konfigurasi yang sudah diatur ketik :
cpan> o confUntuk mengulang konfigurasi dari awal, ketik :
cpan> o conf initMisal akan menginstal modul CGI, maka ketik install CGI dan tunggu sampai selesai.
cpan> install CGI CPAN: Storable loaded ok Going to read /root/.cpan/Metadata Database was generated on Sun, 09 Jan 2005 20:53:26 GMT Running install for module CGI Running make for L/LD/LDS/CGI.pm-3.05.tar.gz CPAN: Digest::MD5 loaded ok CPAN: Compress::Zlib loaded ok Checksum for /root/.cpan/sources/authors/id/L/LD/LDS/CGI.pm-3.05.tar.gz ok Scanning cache /root/.cpan/build for sizes ... ... ... ... Installing /usr/share/man/man3/CGI.3 Installing /usr/share/man/man3/CGI::Carp.3 Installing /usr/share/man/man3/CGI::Fast.3 Installing /usr/share/man/man3/CGI::Switch.3 Installing /usr/share/man/man3/CGI::Apache.3 Installing /usr/share/man/man3/CGI::Push.3 Installing /usr/share/man/man3/CGI::Util.3 Installing /usr/share/man/man3/CGI::Cookie.3 Installing /usr/share/man/man3/CGI::Pretty.3 Writing /usr/lib/perl5/5.8.3/i586-linux-thread-multi/auto/CGI/.packlist Appending installation info to /usr/lib/perl5/5.8.3/i586-linux-thread-multi/perllocal.pod /usr/bin/make install -- OK cpan>
Secara otomatis CPAN akan mengecek keberadaan source di local cache, bila tidak ada baru akan mendonlot dari mirror perl yang anda pilih pada waktu konfigurasi awal tadi. Perintah ini juga dapat dipergunakan untuk meng-update modul perl versi lama.
Untuk melihat modul apa saja yang sudah terinstall pada perl, dapat mempergunakan script bantu.
#!/usr/bin/perl use ExtUtils::Installed; my $instmod = ExtUtils::Installed->new(); foreach my $module ($instmod->modules()) { my $version = $instmod->version($module) || "???"; print "$module -- $version\n"; }
Note: Sesuaikan path binary perl anda !!
Module ExtUtils biasanya sudah langsung terinstall bersama binary basic perl
Salin script diatas dalam sebuah file misal installed.pl lalu ubah ijin akses-nya menjadi execute.
root@azzura root# vi installed.pl root@azzura root# chmod +x installed.pl
Scipts siap digunakan
root@azzura root# ./installed.pl Archive::Tar -- 1.23 CGI -- 3.05 Compress::Zlib -- 1.33 Cwd -- 3.01 DBD::mysql -- 2.9004 DBI -- 1.46 GD -- 2.19 GD::Graph -- 1.43 GD::Graph3d -- 0.63 GD::Text -- 0.86 IO::String -- 1.06 IO::Zlib -- 1.04 Net -- ??? Net::Telnet -- 3.03 Perl -- 5.8.3 Proc::ProcessTable -- 0.39 Term::ReadKey -- 2.21 Term::ReadLine -- 1.01
Untuk menghapus modul perl yang tidak pergunakan atau rusak dapat memakai scipt sebagai berikut:
#!/usr/bin/perl -w use ExtUtils::Packlist; use ExtUtils::Installed; $ARGV[0] or die "Usage: $0 Module::Name\n"; my $mod = $ARGV[0]; my $inst = ExtUtils::Installed->new(); foreach my $item (sort($inst->files($mod))) { print "removing $item\n"; unlink $item; } my $packfile = $inst->packlist($mod)->packlist_file(); print "removing $packfile\n"; unlink $packfile;
Salin script diatas dalam sebuah file misal removed.pl lalu ubah ijin akses-nya menjadi execute.
root@azzura root# vi removed.pl root@azzura root# chmod +x removed.pl
Scipts siap digunakan, misal menghapus modul CGI
root@azzura root# ./remove.pl CGI removing /usr/lib/perl5/5.8.3/CGI.pm removing /usr/lib/perl5/5.8.3/CGI/Apache.pm removing /usr/lib/perl5/5.8.3/CGI/Carp.pm removing /usr/lib/perl5/5.8.3/CGI/Cookie.pm removing /usr/lib/perl5/5.8.3/CGI/Fast.pm removing /usr/lib/perl5/5.8.3/CGI/Pretty.pm removing /usr/lib/perl5/5.8.3/CGI/Push.pm removing /usr/lib/perl5/5.8.3/CGI/Switch.pm removing /usr/lib/perl5/5.8.3/CGI/Util.pm removing /usr/share/man/man3/CGI.3 removing /usr/share/man/man3/CGI::Apache.3 removing /usr/share/man/man3/CGI::Carp.3 removing /usr/share/man/man3/CGI::Cookie.3 removing /usr/share/man/man3/CGI::Fast.3 removing /usr/share/man/man3/CGI::Pretty.3 removing /usr/share/man/man3/CGI::Push.3 removing /usr/share/man/man3/CGI::Switch.3 removing /usr/share/man/man3/CGI::Util.3 removing /usr/lib/perl5/5.8.3/i586-linux-thread-multi/auto/CGI/.packlist
Perlu berhati-hati dalam menghapus karena perubahan ini akan mempengaruhi file POD perl.
Karena biasanya module perl sering dipakai untuk web server (misal apache), maka cek ijin akses dari direktori (/usr/lib/perl....) dan file module perl yang akan dipergunakan user web (misal httpd). Cek file dan direktori tersebut, bisa tidak diakses selain root.