ある変数がオブジェクトがどうか調べる方法

Scalar::Util というモジュールを使うと、ある変数がオブジェクトなのか、ただの変数なのか調べることができます。

use Scalar::Util qw(blessed);

# こんな長くて可読性の悪いコードが
if ( ref($data) and grep( $_ ne ref( $data ), qw(ARRAY SCALAR HASH) ) ) {
}

# こうなります
if ( blessed( $data ) ) {
}

Scalar::Util には他にも有用なメソッドがたくさんあるので、覚えておいて損はしません。