こういう文字列
$str = "1#a2#BC10#0123456789"
を ("a", "BC", "0123456789")
というふうに(長さ0 . '#' . 文字列0 . 長さ1 . # ...)配列にたたきこみたい
のですが、
/^(\d)\1$/ が二つの同じ数値から成る行にマッチすることから類推して

$str =~ s/^(\d+)#(.{\1})//;

としてみたのですが、$2は切り出したい文字列にマッチしてくれません。
今はsubstr()でやっていますが、そうするしかないのでしょうか。