use Sys::Utmp; my $utmp = Sys::Utmp->new(); my %users; while ( my $utent = $utmp->getutent() ) { if ( $utent->user_process ) { $users{$utent->ut_user}++; } } $utmp->endutent; foreach my $user (keys %users) { printf "%s is logged in %d times\n", $user, $users{$user}; }