in reply to Odd number of elements in hash assignment

Other posters have basically told you what you need to do differently, but I just wanted to be sure you understood why:
my %Config =( PPingPath => '/home/dean/pping-v1.37/pping ', PPingOptions => '-t 15 -q |', TraceRTPath => '/usr/sbin/traceroute', TRHops => '-m 3 | ', ExternalTarget => ( 'www.microsoft.com -p 80', 'www.netscape.com -p 80', 'www.silverhand.co.uk -p 80', 'www.demon.net -p 80', 'www.whitehouse.org -p 80' ), Hosts => ( 'www.netscape.come -p 80', 'www.microsoft.com -p 80' ) );
This is exactly equivalent to:
my %Config =( 'PPingPath', '/home/dean/pping-v1.37/pping ', 'PPingOptions', '-t 15 -q |', 'TraceRTPath', '/usr/sbin/traceroute', 'TRHops', '-m 3 | ', 'ExternalTarget', 'www.microsoft.com -p 80', 'www.netscape.com -p 80', 'www.silverhand.co.uk -p 80', 'www.demon.net -p 80', 'www.whitehouse.org -p 80', 'Hosts', 'www.netscape.come -p 80', 'www.microsoft.com -p 80' );
Since the parenthesis in there the way you used them essentially just *grouping* the items, not indicating that they're an array reference, so they don't really have an effect. Note the number of arguments above are odd, which isn't valid in a hash assignment (each of the "keys" on the left and the "values" on the right), so you get that error. If you want to use a list as a "value" for