我可以通过/etc/passwd
和username打印UID
中的所有行。
我想比较UID
的值,并通过<150
和>150
显示相应的用户名。
这是我的while循环和计数
while(<PASSWD>){
chomp;
my @f = split /:/;
sort @f;
@{$passwd{$f[3]}}=@f;
print @f[3 , 0], "\n";
}
my $count = keys(%passwd);
print $count, "\n";
最佳答案
sort @f
不执行任何操作-sort
返回已排序的列表,但不就地更改。如果您将use warnings;
添加到程序中,Perl会告诉您。
我就是这样做的:
#!/usr/bin/perl
use warnings;
use strict;
open my $PASSWD, '<', '/etc/passwd' or die $!;
my %passwd;
while (<$PASSWD>) {
chomp;
my @f = split /:/;
@{ $passwd{ $f[3] } } = @f;
}
my $reported = 0;
for my $k (sort { $a <=> $b } keys %passwd) {
if ($k > 150 and not $reported) {
$reported = print "Over 150\n";
}
print "$k\n";
}
您还可以
grep
小按键:my @under150 = grep $_ < 150, keys %passwd;
print $_->[0], "\n" for @passwd{ @under150 };
关于linux - 比较和显示哈希值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16548317/