>>321
長さが決まってるならsubstr()よりもunpack()の方が速い(と思う)。
my $str = '1#a2#BC10#0123456789';
my $buf;
my @str = ();

while ($str =~ s/^(\d+)#//){
($buf, $str) = unpack("A$1 A*", $str);
push(@str, $buf);
}
print "@str";

でも>>324の言うとおりデータ構造は悪いと思う・・・