大学の課題の下準備(?)として, Growl::Anyを使っていろいろ遊んでみようと画策.
インストールはUbuntu 10.10でGrowl::Anyを使うまでの手順を参考に.
途中, Net::DBusをインストールする為の前提条件となるXML::Twigが正常にインストールできず詰みかけたものの, ログをよく見たら"HTML::TreeBuilderが古い!"みたいな記述があったので, HTML::TreeBuilderをインストールしたらうまくいきました.
というわけで早速動かしてみる.
use strict;
use warnings;
use utf8;
use Growl::Any;
my $growl = Growl::Any->new;
$growl->register('ていっ!', ['とうっ!', 'おらーっ!']);
$growl->notify('', 'title', 'hello!', '/home/path/to/icon.png');

結果はこんな感じ.
Linux系OSの場合, Growl::Anyはnotify-sendコマンドを使うようなので, こいつがアイコンの表示に対応していないのかなー... と思って調べてみたのですが, 普通に対応しているみたいです.
実際に,
notify-send title hello! -i /home/path/to/icon.png
こんなコマンドを打つと,

こんな感じにアイコンが出てきます. むむむ...
というわけでいろいろググってみたのですが, それっぽい情報は見つかりませんでした.
仕方がないのでモジュールの中身を見ていろいろ調査してみたところ, Growl::Anyが呼んでいるDesktop::Notifyというモジュールが, アイコン表示に対応していないのが原因... のようです.
Desktop::Notify::Notificationのshowメソッドを, こんな感じに書き換えると, ちゃんとアイコンが出てきてくれました.
sub show {
my $self = shift;
$self->{id} = $self->{server}->{notify}
->Notify($self->{server}->{app_name},
$self->{id} || 0,
($self->{app_icon} || ''), # ここを書き換えた
$self->{summary},
$self->{body},
[],
{},
$self->{timeout} || 0,
);
$self->{server}->_register_notification($self);
return $self;
}
※後述のmattnさんのパッチに従って, 若干記述を修正しました(2012/5/21 03:30).

CPANのDesktop::Notifyのページを見てみると, 2009年以降モジュールを更新していないみたいなので, その後にアイコン表示機能が追加された為に対応していなかった... という感じでしょうか.
とりあえず, 自分で使う分には全く問題なくなったので, Growl::Anyを使っていろいろと遊んでみようと思います!