I've found a similar algorithm, written in C. This is giving me an excuse to play with the Inline
module, but I won't have anything tonight. :)
But yah the algorithm calls for a known container size, and it attempts to pack everything into that container. What I'd like to do is extend this C version using Perl to give us the needed "given these sizes, what's the smallest that successfully packs everything" behavior, which would just iterate from the smallest to the largest (or whatever order, since I guess some boxes of the same size might be cheaper than others, etc.), and return the first one that gets them all in.
I thought about re-writing this totally in Perl, but the algorithm is rather complex.