If you are totally new to Gtk+ and
Gtk2-Perl, you are welcome to read this part in order to gain background knowledge. It is always better to see the forest before looking at each of the trees.
Gtk+ was created for the Gimp Image Manipulation Program (GIMP). It is a widget toolkit, written in C, but has bindings for various languages including Perl and Python. The Gtk+ toolkit, including
Gtk2-Perl is released under the LGPL. The LGPL allows you to use the Gtk+ toolkit when creating commercial applications.
Gtk2-Perl is the perl bindings to the Gtk+ toolkit, so now you can use Perl, instead of C to write your programs. When we talk about
Gtk2-Perl, we actually speak of three parts.
Gtk2: "Perl bindings to the 2.x series of the Gtk+ widget set. This is a series of widgets such as labels, buttons, and scrollbars, which are organized in an OOP structure. This module allows you to write graphical user interfaces in a perlish and object-oriented way, freeing you from the casting and memory management in C, yet remaining very close in spirit to original API."
Glib: "This module provides perl access to
Glib's GObject libraries.
Glib is a portability and utility library. GObject provides a generic type system with inheritance and a powerful signal system. Together these libraries are used as the foundation for many of the libraries that make up the Gnome environment, and are used in many unrelated projects." When you need to acces certain constants for instance, you will use this module. EG:
use Glib qw(TRUE FALSE);
Gtk2::Gdk: "This module encapsulates the Windowing system (X or Windows) underlying Gtk+. It contains routines to draw on screen, and react to various mouse or keyboard events. It is automatically included when you specify:
Perl is a very mature language. It has hundreds of modules which are very easy to use in any Perl program, the
Gtk2-Perl modules are no different from the rest.
Example: It is very easy to use any of the CPAN modules in the same script that houses the
Gtk2 GUI. To add the Perl DBI (DataBase Independent) module for instance, simply add the DBI module in the
use clause at the beginning of your program, to inform the Perl interpreter that you will also use it.
The same goes for LDAP, SNMP, or any of the CPAN modules.
Perl has a very gradual learning curve. This allows novice programmers to start of easy, and as time goes by, they can progress to more advanced techniques.
The Gtk+ toolkit is used in almost all the modern GNU/Linux distributions, for example the GNOME desktop. Starting with
Gtk2-Perl will expose you to the toolkit, using a easy to understand programming language.
Simple applications are quick to construct in Perl.
Perl's modularity allows for creation of "pluggable" modules, this eases scaling.
Gtk2-Perl there is no compiling, type casting, or any of the complexities that keeps people away from languages like C.
Gtk2-Perl is Open Source.
There are two concepts that may confuse a first time user. Perl modules VS the Gtk+ C API object classes.
Gtk2-Perl was written as a binding to Gtk+, which is in C. Gtk+ is designed in a OOP manner. This will allow certain class inheritance. We may have that the Gtk2::Window inherits methods and properties from Gtk2::Widget. They BOTH may be under the
Gtk2 namespace in Perl, but their inheritance are according to the C API. 
The building blocks of your program are the
Gtk2::Widget inherits from
Glib::Object. All methods that creates an instance of a widget, will return a blessed reference to
Glib::Object. Widgets are created by the
new (something) methods. These methods can contain arguments.
Widgets are destroyed by the
You can add your own data to a
Glib::Object instance. This is very handy to carry specific data with a widget.
This avoids having something like Gtk2::Object::Widget::Container::Bin::Window->new() just to create a new window!