"Marcelo E. Magallon" <[EMAIL PROTECTED]> writes: > can I use IO::Handle::new_tmpfile in an Perl script that's run on > postinst? > > The package has to Predepend on perl, right? I'll use this > tempfile to modify a conffile (it *has* to be modified, it's not an > option)... what's the proper way of moving the file back into place? > I think: > > system "cat $tempfile > $conffile";
I really dislike Perl scripts that use system() when Perl is quite capable of doing it. Wouldn't File::Copy do it? In any case, IO::File::new_tmpfile() unlinks the temporary file, so you'd have to do File::Copy::copy($filehandle, $conffile) anyway. You only have to worry about security problems with temporary files if you use /tmp anyway, so I'd recommend something like: umask(0755); open(NEW, "> /etc/conffile.new") or die "pkg.postinst: open conffile.new: $!\n"; # Write stuff to NEW. close(NEW) or die "pkg.postinst: close conffile.new: $!\n"; rename("/etc/conffile.new", "/etc/conffile") or die "pkg.postinst: rename /etc/conffile.new /etc/conffile: $!\n"; Make sure the postrm removes the changes when someone downgrades, if necessary. -- Carey Evans http://home.clear.net.nz/pages/c.evans/ "As a concept, virtual reality seems to appeal to people who spend a lot of time indoors." - Gregory Benford -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]