in reply to Access variable names
It is not possible to know the variable name of the variable passed into the subroutine, you need to tell it the name of the varaibles.
Just a minor modification to your code will make it work - just pass in the variable name in csv format.
Just a minor modification to your code will make it work - just pass in the variable name in csv format.
Simpler still, you can use Data::Dumper to inspect the variables.#!/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
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; sub defnz { my @names = split /,/, shift; my %vars; @vars{@names} = @_; for my $item (@names) { if (!defined($vars{$item}) || $vars{$item} eq '') { print STDERR Dumper(\%vars); 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: All scalars defined and non-empty $VAR1 = { '$foo' => 'FOO', '$baz' => '', '$bar' => 'BAR' }; $VAR1 = { '$foo' => 'FOO', '$baz' => '', '$bar' => undef };
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Access variable names
by Ovid (Cardinal) on Sep 01, 2005 at 16:44 UTC |
In Section
Seekers of Perl Wisdom