You could do it with pack by putting cells A and C in a frame (and ->pack(-side=>'top') and cells B and D in a frame (and ->pack(-side=>'top'). Then the frames you would ->pack(-side=>'left').
That being said, merlyn is right. The grid geometry manager is better suited for such a layout.