in reply to Re: Using the file handle created by File::Temp to set specific file permissions
in thread Using the file handle created by File::Temp to set specific file permissions
Interesting sample. I've tried the following so far, but will have to redo my location for the temporary file based on the location of the destination. That is so it will be on the same partition as the file it is replacing. Otherwise, I get the error, "Could not rename temporary file handle: Invalid cross-device link".
#!/usr/bin/perl use File::Temp; use strict; use warnings; my @data = qw/a b c d e f g h i j k l m n o p/; my $file="/tmp/foo.txt"; my (undef, undef, $mode, undef, $uid, $gid) = stat("$file"); $mode = sprintf( "%04o", $mode & 07777); my $tmp = File::Temp->new( TEMPLATE => 'tempXXXXX', DIR => '/tmp', SUFFIX => '.foobar', UNLINK => 1 ); chmod(oct($mode), $tmp) or die("Could not change tempfile to mode $mode.\n"); for my $d (@data) { print $tmp $d,"\n"; } rename($file, "$file.orig") or die("Could not rename original file, '$file': $!\n"); rename($tmp, "$file") or die("Could not rename temporary file handle: $!\n"); close($tmp); exit(0);
|
|---|