Thread Vor kopieren warten bis Subroutine abgeschlossen (28 answers)
Opened by giordano at 2010-02-17 14:50

havi
 2010-02-17 16:59
#133181 #133181
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Guest giordano
Hallo,

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?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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...

Code (perl): (dl )
1
2
3
4
5
use warnings;
use strict;
use Spreadsheet::Excel2Text qw( XlsSaveToText );

XlsSaveToText("C:\\Excel.xls", "C:\\Excel.txt");


... weiter in deinem Code:
Code (perl): (dl )
1
2
my @filecopy = ("a.txt","b.txt","c.txt","d.txt");
foreach my $file (@filecopy )  {


Gruß,
Gernot

View full thread Vor kopieren warten bis Subroutine abgeschlossen