develooper Front page | perl.beginners | Postings from May 2008

Re: deleting a user name from a file

Thread Previous
From:
Rob Dixon
Date:
May 9, 2008 12:40
Subject:
Re: deleting a user name from a file
Lokeey wrote:
> 
> Rob thanks for your input. Yes the * is a typo or pasted somehow. Rushed
> and wasn't paying attention, and worked on it some more after I sent
> that out and thought about how the ARGV and my other syntax, it didn't
> make sense to me. But I saw your comment just now and had already taken
> out the ARGV. Here's what I have so far. I'm just not sure how to lay
> out my loop, (while or if)
> 
> /#!/usr/bin/perl -w

Always

  use strict;
  use warnings;

and Perl will tell you about many simple mistakes that you may have made.

> # this script removes a user from sudoers file
> 
> print "Enter Site-ID: "; $site = <STDIN>;
>    chomp($site);
> 
> print "\nEnter the username to remove from /$site/local/etc/sudoers: " ;
> $user = <STDIN>;
>    chomp($user);
> 
> # confirm user to be removed
> 
> print "\n$user will be removed from /$site/local/etc/suders. ";
> 
>   open FILE, "@$site/local/etc/sudoers" or die
>   "cannot open sudoers for $sites. ";/
> 
> *### not exactly sure how to lay out my loop or if i should use while or
> if statements###*
> /
> print "Done! User $user has been removed from $site sudoers. \n";/

OK, but you've now removed everything to do with the real purpose of the
program. I know it's tempting to write at least /something/, but all you've done
is to pretend to gather parameters for a procedure that you haven't yet defined.
Throw all this away, which is nothing to do with what the program really does,
and write


  use strict;
  use warnings;

  my $site = 'sss';
  my $user = 'uuu';

and then start to fill the rest out. I gave you many hints in my previous post
so please look at that again. The first thing is to define what your program
does and what command-line parameters it expects, so I think you should start by
writing the usage text as I showed:

die <<USAGE unless @ARGV;
  This program should be run with command-line parameters like this:
    :
  And does this:
    :
USAGE

and change that text until you are happy to commit to it and make your program
do what it says it does.

Rob

Thread Previous


Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About