in reply to dynamically generated array variable

Your config file parser simply creates those variables instead of allowing to query them? To work with this bad design, you'll need to use symbolic references.

my $hostname = 'hosta'; my @host = do { no strict 'refs'; @$hostname };

Or if a reference is fine:

my $hostname = 'hosta'; my $host = do { no strict 'refs'; \@$hostname };

Update: I forgot to mention the above only works if @hosta is a package variable, not a my variable.

Replies are listed 'Best First'.
Re^2: dynamically generated array variable
by perlknight (Pilgrim) on Jan 02, 2007 at 21:03 UTC
    I did this and it works:
    #use strict; $host = qw(@hosta); foreach $cnf (eval($host) { }
    . is there a way to specify it so that I can use strict? Thanks.

      Yes. I already provided that. use strict does not give an error with the code in my previous post.

      use strict; use warnings; # ... Load config file ... my $hostname = 'hosta'; my @host = do { no strict 'refs'; @$hostname }; foreach my $cnf (@host) { ... }

      By the way, why are you using qw(...) to initialize a scalar. Don't you want
      $host = q(...);
      or the equivalent but more readable
      $host = '...';