Hey all,

crud:x:503:503::/home/tunnel:/bin/bash
test:x:504:45:Test Account:/home/test:/bin/false
test4:x:506:45:test Account:/home/test4:/bin/false
test2:x:507:45:Test Account:/home/test2:/bin/false
daniel:x:508:45:Crudles:/home/daniel:/bin/false

The followowing hash is created below with the following code...

%users = (
           'crud'  => '503',
           'test'  => '45',
           'test4' => '45',
           'test2' => '45',
           'daniel'=> '45'
         );



#!/usr/bin/perl -w

use Data::Dumper;

$file    = '/etc/passwd';
$user    = "test4";

open PASSWD, "$file"  or die "Cannot open $file for reading :$!";
#Store /etc/passwd as a file
while ($lines = <PASSWD>) {
  @lines = split (/:/, $lines);
  #Store all users and their gids in a hash!
  $users{$lines[0]} = $lines[3];
}
close PASSWD;
print Data::Dumper->Dump( [\%users], ['*users'] );

#Check to see if #user exists
if ( ! defined $users{$user} ) {
  print "Sorry user $user does not exist! \n";
}elsif (! defined $users{$user}{'45'} ) {
  print "Sorry the user $user does not have a GID of 45! \n";
} else {
  print "Found $user! This user has a GID of 45! \n";
}

For some reason it will check the first if statement (! defined
$users{$user}) and check this OK.  But when I get to the second if
statement ( ! defined $users{$user}{'45'} ) it will never return true no
matter what $user is set to?  I figured that ! defined
$users{$user}{'45'} would return false if for example $user = crud, but
if $user = test4 then it should return to the last else statement?

Any ideas,

Dan

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

Reply via email to