--- Daniel Falkenberg <[EMAIL PROTECTED]> wrote: > Curtis, > > Cheers for that that makes alot more sense now :). Yes your are correct > about the /etc/passwd file. It's all well and good to be able to issue > that command from a command line, but what if I wanted to issue the > exact same code but from a script? > > Regards, > > Dan
Dan, You can use -i on the shebang line. Passing /etc/passwd as an argument gives you this (untested): #!/usr/bin/perl -wi use strict; while(<>) { my @F = split /:/; s/^/*/ if $F[3] == 45; } Otherwise, you could try this (*very* untested): #!/usr/bin/perl -w use strict; my $file = '/etc/passwd'; open FILE, "+< $file" or die "Cannot open $file in update mode:$!"; my @lines = <FILE>; @lines = map { add_star( $_ ) } map { [split /:/] } @lines; seek FILE, 0, 0; print FILE @lines; truncate( FILE, tell(FILE) ); close FILE; sub add_star { my $array_ref = shift; if ( $array_ref->[3] == 45 ) { $array_ref->[0] =~ s/^/*/; } return join ':', @$array_ref; } The above code should give you an idea of how to proceed. I just typed it in, though. It's untested. (and add_star is a stupid sub name, but I really don't know what this is for, so it's all I could come up with :) Cheers, Curtis "Ovid" Poe ===== Senior Programmer Onsite! Technology (http://www.onsitetech.com/) "Ovid" on http://www.perlmonks.org/ __________________________________________________ Do You Yahoo!? Find a job, post your resume. http://careers.yahoo.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]