%ttys=();
open (WHO, "who|");
while(){
($user, $tty) = split;
push(@ {$ttys{$user}}, $tty);
}
foreach $user (sort keys %ttys){
print "$user: @{$ttys{$user}}\n"
}
push(@ {$ttys{$user}}, $tty);
@{$ttys{$user}}
) и значение которое добавляет ($tty
)@{$ttys{$user}}
?$ttys{key}
означает что работаем с скаляром соответствующим ключу key@{$ref}
получение масива по ссылке.#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
my %ttys;
open my $WHO, '-|', '/bin/who' or die "open() error: $!\n";
while (<$WHO>) {
my ($user, $tty) = split;
push @{$ttys{$user}}, $tty;
}
close $WHO;
#print Dumper(\%ttys);
foreach my $user (sort keys %ttys) {
print "$user: @{$ttys{$user}}\n";
}