Problems at writing multiple files

V

vladimir.giron

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/</&lt;/g;
$value =~ s/>/&gt;/g;
$out .= " <$attribute>$value</$attribute>\n";
}
}
$out = $out . $XML_SUFFIX;
if(0) {
#nothing yet
}
else {
print ::FILE $out;
}
}
 
M

Mark Clements

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
 
V

vladimir.giron

Mark said:
Are the files created but have no content?


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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top