我想将/etc/passwd的内容存储在一个结构中,以便以后可以更新每个值,但我无法确定要使用哪个结构。

#!/usr/bin/perl

use warnings;
use strict;

open PASSWD, "/etc/passwd";
while(<PASSWD>) {

    chomp;
    my @f = split /:/;

    print "username $f[0]\n";
    print "password $f[1]\n";
    print "uid      $f[2]\n";
    print "gid      $f[3]\n";
    print "gecos    $f[4]\n";
    print "home     $f[5]\n";
    print "shell    $f[6]\n";
    print "--------------------------\n";

}

我假设它应该是一个散列数组,其中用户名是密钥,但我不知道如何做到这一点。
“数组的散列数组”是一种方法吗?

最佳答案

将其存储在散列中,用户名作为键,拆分数组作为值:

my %passwd = ();

open PASSWD, "/etc/passwd";
while(<PASSWD>) {

    chomp;
    my @f = split /:/;
    @{$passwd{$f[0]}} = @f;
}
print $passwd{'Sjoerder'}[3];

关于linux - 如何将/etc/passwd存储在哈希或数组中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4920995/

10-13 02:59