C
CJ
Perl-folks,
Got a question that I hope someone can answer. I often use hashs like
structures and they sometimes contain references to other hashs or arrays.
My question is what is the best way to de-reference the internal hash or
array. An example. I recent wrote something that creates a hash which has
a default server name and a reference to an array of other server names.
%server_info = (default_server=>\$default,
server_list=> \@servers);
The sub that creates this hash returns a reference to that hash...
return \%server_info;
When I try to use it in the calling program, I have tried to use the
following line only to get syntax errors...
$server_list = sub_called_earlier();
foreach $element (@($server_list->{server_list})) {
do something with $element;
}
Seems like this should work as $server_list->{server_list} is a reference to
an array. I can get it work by using the following...
$server_array_ref = $server_list->{server_list};
foreach $element (@$server_array_ref) {
do something with $element;
}
This seems like a real waste of time and there has to be a way to make it
work properly. I have spent time looking for an answer, but have come
up short. If anyone has a reference (no pun intended) to point me to or a
concept on how they make it work, would love to hear it. Thanks.
CJ
Got a question that I hope someone can answer. I often use hashs like
structures and they sometimes contain references to other hashs or arrays.
My question is what is the best way to de-reference the internal hash or
array. An example. I recent wrote something that creates a hash which has
a default server name and a reference to an array of other server names.
%server_info = (default_server=>\$default,
server_list=> \@servers);
The sub that creates this hash returns a reference to that hash...
return \%server_info;
When I try to use it in the calling program, I have tried to use the
following line only to get syntax errors...
$server_list = sub_called_earlier();
foreach $element (@($server_list->{server_list})) {
do something with $element;
}
Seems like this should work as $server_list->{server_list} is a reference to
an array. I can get it work by using the following...
$server_array_ref = $server_list->{server_list};
foreach $element (@$server_array_ref) {
do something with $element;
}
This seems like a real waste of time and there has to be a way to make it
work properly. I have spent time looking for an answer, but have come
up short. If anyone has a reference (no pun intended) to point me to or a
concept on how they make it work, would love to hear it. Thanks.
CJ