On Friday, October 3, 2003, at 04:09 PM, Dean Do wrote:
> # sort /etc/passwd > /etc/passwd-new > # mv /etc/passwd-new /etc/passwd
Any good reason not to use the above?� :)��
[dean] Thanks for your response, James.� The thing is... I have an existing Perl script that I working on and the above UNIX shell commands won't work in the Perl script.� Is there a way to make them work?
Yes. Try:
`sort ...`; `mv...`;
Generally, this is considered a poor solution, because it's not very portable. I'll leave you to decide how important that is in this case.
Well, what would be the steps?
1. open /etc/passwd/ 2. read all entries into memory 3. close /etc/passwd/ 4. sort entries 5. open new file 6. print all entries 7. close new file 8. rename new file
Can you walk down that list replacing it with Perl statements?��
[dean] That's a lot more steps to accomplish a simple sort of a text file.� I can replace those steps with Perl statements.� Thanks again for your help.
Maybe, but it's really not hard to code up and it's much more flexible. You can also shorten it up a little, if it's a big concern:
open OLD, '/etc/passwd' or die "File error: $!\n"; my @entries = sort grep !/^#/, <OLD>; open NEW, '>/etc/new_passwd' or die "File error: $!\n"; print foreach @entries; close NEW; rename '/etc/new_passwd', '/etc/passwd';
Hope that helps.
James
