Guest giordanoHallo,
Ich habe eine Subroutine extractXLS() geschrieben, das aus Excel-Files eine Text-Datei erstellt. Diese Text-Datei wird anschliessend kopiert in ein anderes Verzeichnis. Nun ist mir aufgefallen, dass die kopierte Version nicht alle Zeile enthält und ich vermute, dass der Kopiervorgang bereits begonnen hat, bevor die Subroutine abgeschlossen war. Wie kann ich den Kopiervorgang erst dann starten, wenn die Subroutine abgeschlossen ist?
use File::Copy;
...
...
while ( my $excel = readdir(EXCELFILES) ) {
if ( $excel =~ /xls/ ) {
extractXLS(....); # produziert ein txt-File in $directory_txt
}
}
my @filecopy = ("a.txt","b.txt","c.txt","d.txt");
foreach my $file (@filecopy ) {
# erst starten, wenn extractXLS abgeschlossen ist
copy($directory_txt.$file,$directory_txtcopy.$file) or die "File cannot copied";
}
Bin für jeden Tipp dankbar.
Gruss
giordano
Du kannst das ganze auch mit vorhandenen CPAN-Modulen lösen...
use warnings;
use strict;
use Spreadsheet::Excel2Text qw( XlsSaveToText );
XlsSaveToText("C:\\Excel.xls", "C:\\Excel.txt");
... weiter in deinem Code:
my @filecopy = ("a.txt","b.txt","c.txt","d.txt");
foreach my $file (@filecopy ) {
Gruß,
Gernot