perl で ビットの扱いに関する質問です。

-------
my $val = 10;
my @result = &hoge( $val );

sub hoge{
 my $val = shift;

 # 2進数に変換し、1がたっている箇所だけ10進数にして返す。
 # (例) 10 => (1010) = 2^3 + 2^1 = 8 + 2
  # return で (8,2) を Array で返したいです。

}
-------
Perlだとこういう場合どういう風にするもんなんでしょうか?