use strict; use warnings; use Gtk2 '-init'; package FooDialog; use strict; use warnings; use Gtk2; use Glib::Object::Subclass Gtk2::Dialog::, signals => { response => \&do_response }; sub do_response { my ($self, $resp) = @_; print "response $resp\n"; print $resp eq 'ok' ? "equals ok\n" : "not equals ok\n"; return $self->signal_chain_from_overridden ($resp); } package main; my $dialog = FooDialog->new; $dialog->add_button ("Press me" => 'ok'); $dialog->show; Gtk2->main;