in reply to push with variable substitution ?

This can be done with symbolic references. Be careful as symbolic references can be dangerous. This code will not run with "use strict".
@vars =("num", "alpha" ); $num=1; $alpha="a"; foreach(@vars){ @$_=$$_; }
Now that I've shown you how... don't ever use symbolic references. As merlyn pointed out above, there are better ways to have a functionally equivalent end result that aren't nearly as nasty or error-prone.
my %vars=(num => 1, alpha => 'a'); my %h; foreach(keys %vars){ $h{$_}=[$vars{$_}]; }
The syntax for accessing the arays is slightly different (because of the extra level of indirection in there), but this is a much cleaner and less error-prone approach.