Nir Cohen wrote:
> 
> I try to write a script that open 2 files .
> the first file is /etc/passwd which in the first column has the
> users name in my server .the second file is a file that has just users name in each 
>row.
> I want a script that will check both files and if the users name is the same in the 
>two files the script will print me the whole line from /etc/passwd for this user.
> Here is what I did-the problem is that it print me the whole users of /etc/passwd 
>even those users that are not in the other file.
> here is the script:
> #!/usr/bin/perl -W

use strict;

> open(nir, '/etc/passwd');

You should use caps for file handles and _always_ test the return value
of open.
open NIR, '/etc/passwd' or die "Cannot open '/etc/passwd': $!";

> while(<nir>) {
> ($a, $b, $c, $d, $e, $f, $g, $h) = split(/:/, $_);
> open(zvi, '/users/zvikaus/Rad_pine.txt');

See above
open ZVI, '/users/zvikaus/Rad_pine.txt' or die "Cannot open
'/users/zvikaus/Rad_pine.txt': $!";

> $z=<zvi>;
> chomp($z);
> if ($z=$a) {
> print ("$a\n");
> #print ("$a,$b,$c\n");
> }
> close(zvi);
> }
> close(nir);


Anyhow, this is how I would do it:

#!/usr/bin/perl -w
use strict;

my $file = '/users/zvikaus/Rad_pine.txt';

open ZVI, $file or die "Cannot open '$file': $!";
while ( <ZVI> ) {
    chomp;
    print "$_\n" if defined getpwnam( $_ );
    }
close ZVI;

__END__

Have a look at the functions getpwent(), getpwnam() and getpwuid().



John
-- 
use Perl;
program
fulfillment

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

Reply via email to