http://qs1969.pair.com?node_id=87681

Odud's recent posting on Junior Perl came with a little puzzle to do with giving change, which is simple enough, and is certainly golf material. Suppose you are trying to write a function c that, give the amount you want, and an array reference to the units of currency that you have available in order from lowest to highest, will return a list of the required change.

For instance, if \$22.50 was specified, along with a US currency specification, assuming no \$2 bills are available in the area:     print join(',',c(22.50,[.01,.05,.1,.25,1,5,10,20,50,100])); Would output:     20,1,1,0.25,0.25 Of course, other countries use different units, such as:     print join(',',c(22.50,[.01,.05,.1,.20,1,2,5,10,20,50,100])); Which would show:     20,2,0.2,0.2,0.1 Amounts less than the smallest unit of currency are not handled, so they can be ignored.

Here's my baseline, which is 115 characters, not including linebreaks required for presentation:
```sub c{
(\$t,\$p,@r)=@_;@p=map{int(\$_*100)}@\$p;
\$t=int(\$t*100);while(\$v=pop@p and\$t>0
){while(\$t>=\$v){push@r,\$v/100;\$t-=\$v;
}}@r
}