in reply to Swapping Files

Let me see if I understand: Another way to phrase that last step, based on your second point, is that the existing "B" file (which had been considered "temp" data) becomes the new "A" file (no longer temp data?), whereas the existing "A" file, after being update by the script, becomes the new "B" file (to be considered henceforth as "temp" data?) That does seem strange, but... whatever.

Usually, the only way to swap file names is by a three-step process:

rename "A", "A.prime"; rename "B", "A"; rename "A.prime", "B";
(though you'll want to come up wiht a "third-name" string that is certifiably guaranteed to be unique and novel, so you don't inadvertently obliterate some other file in the process.

Replies are listed 'Best First'.
Re^2: Swapping Files
by deadpickle (Pilgrim) on Oct 08, 2007 at 21:06 UTC
    Her is the code, I keep getting the error on the rename command. Anyone know why?
    #!/usr/bin/perl #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~ #Reads in uavposition and outputs the uavpf.txt file # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~ use strict; use warnings; $\="\n"; my $img = '"http://updraft.unl.edu/~uas/uas/uas.png"'; for(;;){ #Open Placefile open OUT,'>',"/home/uas/public_html/uas/uaspf.txt.bak" or die +"Cannot Open File uavpf.txt.bak!"; #print placefile elements print OUT "Title: UAV GPS Position"; print OUT "Threshold: 999"; print OUT "RefreshSeconds: 2"; print OUT "Iconfile: 1, 22, 21, 10, 14, $img\n"; #read in UAV GPS lines #Open UAV GPS file open IN,'<',"/home/uas/Scripts/COORDS/uasposition" or die "Can +not Open File uavposition!"; while (my @gps = <IN>){ chomp @gps; my $ngps = @gps; my @uav = split(" ",$gps[$ngps-1]); my $lat1 = sprintf("%.5f", $uav[0]); my $lon1 = sprintf("%.5f", $uav[1]); my $head1 = sprintf("%.2f",$uav[2]); print OUT "Icon: $lat1, $lon1, $head1, 1, 1, Latitude: + $lat1 Longitude: $lon1 Heading: $head1 "; } close (IN); close (OUT); rename("uaspf.txt", "uaspf.txt.bak") or die"Unable to replace" +; sleep 2; }
      I do not know why, but here are some things to look at.

      Does printing the value of $! give you any clues?

      rename("uaspf.txt", "uaspf.txt.bak") or die"Unable to replace:$!\n";

      Alos, take a look at rename because there are portability issues with this function.