|
Prev: Problem with string comparison
Next: Hard or Easy? To find string, then grab criterion matched lines above and below?
From: vladimir.giron on 5 Oct 2006 11:32 I have a problem at writing multiple files. I have this code where I write several XML files (the number of files it's dynamic). I use a loop and in Linux works fine but the problem is Windows. For example lets say that I want to write a long essay into 1 file, Windows and Linux do it as it should be, the problem comes when I want to write that same essay (divided into 5 parts) in 5 files. Linux works fine but windows skips the first part (the first file is not written) and the remaining parts are written well.. if I want to write the essay into 10 files, the first three are not written and as the number of files grows so does the number of files not written. Does anyone knows why could this be? Next is the part of the code where I write into the files. local *FILE_X; eval { if(substr($filename, length($filename) - 4) eq '.txt') { #this does nothing yet } else { my $success = open ::FILE, "> $filename"; unless($success) { $output->Error("Can not open file: $filename"); return $False; } print ::FILE $FILE_HEADER; foreach my $line (@{$self->{_set}}) { $line->WriteXML(*FILE_X{IO}); } print ::FILE $FILE_FOOTER; close ::FILE; } }; if($@) { $output->Fatal("Couldn't write out to file: $filename"); } chmod(0644, $filename); sub WriteXML { my($self, $file) = @_; if(!$self->{loc}){ return; } my $out = $XML_PREFIX; foreach my $attribute (@__slots__){ my $value = $self->{$attribute}; if($value) { if(Encode::is_utf8($value)) { $value = $encoder->NarrowText($value, undef); } #Escape characters $value =~ s/&/&/g; $value =~ s/'/'/g; $value =~ s/"/"/g; $value =~ s/</</g; $value =~ s/>/>/g; $out .= " <$attribute>$value</$attribute>\n"; } } $out = $out . $XML_SUFFIX; if(0) { #nothing yet } else { print ::FILE $out; } }
From: Mark Clements on 5 Oct 2006 14:13 vladimir.giron(a)gmail.com wrote: > I have a problem at writing multiple files. I have this code where I > write several XML files (the number of files it's dynamic). I use a > loop and in Linux works fine but the problem is Windows. > > For example lets say that I want to write a long essay into 1 file, > Windows and Linux do it as it should be, the problem comes when I want > to write that same essay (divided into 5 parts) in 5 files. Linux works > fine but windows skips the first part (the first file is not written) > and the remaining parts are written well.. if I want to write the essay > into 10 files, the first three are not written and as the number of > files grows so does the number of files not written. Are the files created but have no content? > Does anyone knows why could this be? Next is the part of the code where > I write into the files. Is possible you need to set binmode, but would depend on your data. Mark
From: vladimir.giron on 6 Oct 2006 11:51
Mark Clements wrote: > vladimir.giron(a)gmail.com wrote: > > I have a problem at writing multiple files. I have this code where I > > write several XML files (the number of files it's dynamic). I use a > > loop and in Linux works fine but the problem is Windows. > > > > For example lets say that I want to write a long essay into 1 file, > > Windows and Linux do it as it should be, the problem comes when I want > > to write that same essay (divided into 5 parts) in 5 files. Linux works > > fine but windows skips the first part (the first file is not written) > > and the remaining parts are written well.. if I want to write the essay > > into 10 files, the first three are not written and as the number of > > files grows so does the number of files not written. > > Are the files created but have no content? > > > Does anyone knows why could this be? Next is the part of the code where > > I write into the files. > > Is possible you need to set binmode, but would depend on your data. > > Mark I found the problem! After a few weeks with the bug I found what it was.. I was using a relative path so while the files were been read and written they weren't stored into the folder I told it but into the folder of the essay. When just one file was written the file was stored into the right place but with several just the last ones where stored into the place I told the program. Weird! Mark, thanks for your input. |