in reply to why qw() rather than ()

The first snippet of code declares a variable named '@array'. The second snippet of code declares the variables named by the elements of @array, whatever they may be.

#!perl -w use strict; use vars qw(@array); # same as: use vars '@array'; BEGIN { # the use vars below happens at compile time, # so @array must be set at compile time @array = ('$scalar', '%hash'); } use vars (@array); # $scalar and %hash are now declared $scalar = 7; %hash = (key => 'value');
qw/STRING/ is actually the same as split ' ', 'STRING'.