#!/usr/bin/perl
#	-*- Perl -*-
# Perl-Beispielscripts V1.00 - Ausgabe von /etc/passwd
# Copyright (C) 1997, Ronald Blaschke - 9620411
#
# $RCSfile: passwd2.pl,v $ - $Author: rbla $
# $Revision: 1.1 $ - $Date: 1997/06/13 00:59:43 $

# Formatangabe für USERS, Titelzeile
format USERS_TOP =
                        Passwd File
Name                       Login      Uid   Gid Home
------------------------------------------------------------------
.

# Formatangabe für USERS, normale Zeile    
format USERS =
@<<<<<<<<<<<<<<<<<<<<<<<<< @||||||| @>>>> @>>>> @<<<<<<<<<<<<<<<<<
$user_name,            $login_name, $uid, $gid, $directory
.


open(P, "/etc/passwd");

while(<P>) {
    # Daten aus der Passwd-Datei extrahieren
    chomp;
    ($login_name, $passwd, $uid, $gid, $user_name, $directory, $shell)=split(/:/,$_, 7);
    ($user_name)=split(/,/, $user_name);

    # Benutzer nur zur Liste hinzufügen, wenn das Benutzernamen-Feld nicht leer ist
    if($user_name) {
	# Benutzer zu einem Hash-of-Hash hinzufügen
	foreach $entry('login_name', 'passwd', 'uid', 'gid', 'user_name', 'directory', 'shell') {
	    ${$users{$login_name}}{$entry}=$$entry;
        }
    }
}

# Format auswählen
$~ = "USERS";
$^ = "USERS_TOP";

# Benutzer sortiert ausgeben
foreach $user(sort keys %users) {
    # Variablen für write() belegen
    foreach $entry(sort keys %{$users{$user}}) {
	$$entry=${$users{$user}}{$entry};
    }
    write;
}

close(P);
   


