>>>>> "John" == John W Krahn <[EMAIL PROTECTED]> writes:

John> Are you sure you want to modify /etc/passwd?  Which field do you
John> want to sort on?

And if you want to modify /etc/passwd, you should be using vipw,
because vipw will lock the file for you, and verify some sanity checks
the updated data to keep you from shooting yourself in the foot.

    #!/usr/bin/perl

    unless (@ARGV) {
      # no argument passed, so call ourselves inside vipw:
      $ENV{EDITOR} = $0; # vipw will call us now instead of vi/emacs/whatever
      exec "vipw";
      die "Cannot exec vipw: $!";
    }

    # argument passed means that vipw has called us with a temp filename

    # edit it inplace
    $^I = "~";
    # and all at once (for reasons that are hard to explain here)
    $/ = undef;

    my @lines = split /\n/, <>; # only one read gets the entire file
    # anything we print replaces that entire file
    @lines = sort @lines; # here's the active step - replace as you wish
    print map "$_\n", @lines;

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[EMAIL PROTECTED]> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to