#!/usr/bin/perl use strict; use warnings; sub defnz { my @names = split /,/, shift; my %vars; @vars{@names} = @_; for my $item (@names) { if (!defined($vars{$item})) { print STDERR "$item is not defined\n"; return; } elsif ($vars{$item} eq '') { print STDERR "$item is empty\n"; return; } } print STDOUT "All scalars defined and non-empty\n"; return 1; # all items in list defined and non-empty } my ($foo,$bar,$baz) = ("FOO","BAR","BAZ"); defnz('$foo,$bar,$baz', $foo,$bar,$baz); ($foo,$bar,$baz) = ("FOO","BAR",""); defnz('$foo,$bar,$baz', $foo,$bar,$baz); ($foo,$bar,$baz) = ("FOO",undef,""); defnz('$foo,$bar,$baz', $foo,$bar,$baz); __END__ output is: All scalars defined and non-empty $baz is empty $bar is not defined