Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question: (files)

I hava a script I wrote that recursivly does a search and replace on strings in text files. Once I have the desired text how do I write it back without changing the ownership and mode of the file? If i do: "open(SESAME, ">temp");" then the ownership is changed to me and mode is set to the default.

Originally posted as a Categorized Question.

  • Comment on How do I modify a file and preserve the ownership and permissons?

Replies are listed 'Best First'.
Re: How do I modify a file and preserve the ownership and permissons?
by Masem (Monsignor) on Mar 06, 2001 at 04:27 UTC
    When you open the file for writing there is no way of getting around the file system changing the permissions and the like on you. So the only way to deal with this is to capture these settings through the stat() function, and then to reapply the mode, uid and gid via chmod and chown. For example:
    my $filename = "some.txt"; my @stats = stat( $filename ); open( FILE, ">$filename" ) or die $!; # do your magic to the file.... close( FILE ); chmod $stats[2], $filename oe die $!; # mode is stored in stat field + 2 chown $stats[4], $stats[5], $filename or die $!; # uid in 4, gid i +n 5

    edit: chipmunk on 2001-03-05