Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

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

by Anonymous Monk
on Mar 06, 2001 at 03:20 UTC ( [id://62375]=perlquestion: print w/replies, xml ) Need Help??

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.

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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://62375]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (5)
As of 2024-03-28 17:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found