Perl разбить строку на 2d массив - PullRequest
0 голосов
/ 08 июля 2010

Хорошо .. это работает ...

sub getApSrvs
{
my %apsrv;
my $cluster;

  foreach $cluster (getClusters())
  {
  $apsrv{$cluster} = [split('\s+', `/$cluster/bin/gethosts -t app|sort -u`)];
  }
return %apsrv;
}

... теперь, как в сэндвиче с ветчиной я могу заставить это печататься так

хорошо, я добавил:

my %apsrv = getApSrvs();
for my $cluster (keys %apsrv) {
print "$cluster -> $apsrv{$cluster}\n";
}

и я получаю ...

qboc22 -> ARRAY (0x9111618)

qboc5 -> ARRAY (0x9111504)

qboc32 -> ARRAY (0x90e20cc)

qboc28 -> ARRAY (0x90e1d28)

qboc30 -> ARRAY (0x90e1f38)

qboc23 -> ARRAY (0x9111540)

qboc27 -> ARRAY (0x911181c)

qboc29 -> ARRAY (0x91115ac)

qbo -> ARRAY (0x90e2294)

Ответы [ 2 ]

1 голос
/ 08 июля 2010

$ apsrv {$ cluster} является ссылкой на массив, поэтому, если вы хотите распечатать его содержимое, вы можете сделать:

my %apsrv = getApSrvs();
for my $cluster (keys %apsrv) {
    print "$cluster -> ", join(', ', @$apsrv{$cluster}), "\n";
}
0 голосов
/ 08 июля 2010
my %apsrv = getApSrvs();
for my $cluster (keys %apsrv) {
    print "$cluster -> $apsrv{$cluster}\n";
}

Вы хотите отсортировать ключи (sort keys %apsrv) перед печатью, если важен порядок.

...