我想将/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/