Leser: 1
|< 1 2 >| | 12 Einträge, 2 Seiten |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
... while( my $Datei = readdir DIR ){ if ( $Datei =~ /\.doc$/i ){ my $Word = Win32::OLE->new('Word.Application', 'Quit'); 2: $Word->{'Visible'} = $debug; # if you want to see what's going on 3: $Word->Documents->Open("$plpath$tmp_mail$Datei") || die("Unable to open document ", Win32::OLE->LastError()); 4: 5: my $Versender1 = $Word->ActiveDocument->FormFields("Text1")->Result; 6: my $Versender2 = $Word->ActiveDocument->FormFields("Text18")->Result; 7: my $VersStr = $Word->ActiveDocument->FormFields("Text20")->Result; .... $Word->Quit(); } }
1 2 3 4 5 6 7
my $Word = Win32::OLE->new('Word.Application', 'Quit'); $Word->{'Visible'} = $debug; # if you want to see what's going on $Word->Documents->Open("$plpath$tmp_mail$Datei") || die("Unable to open document ", Win32::OLE->LastError()); my $Versender1 = $Word->ActiveDocument->FormFields("Text1")->Result; my $Versender2 = $Word->ActiveDocument->FormFields("Text18")->Result; my $VersStr = $Word->ActiveDocument->FormFields("Text20")->Result;
1 2 3 4 5 6 7 8
#!/usr/bin/perl use strict; use warnings; eval{ die 7; } or do{ die "died with $@" };
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl use strict; use warnings; for(0..9) { eval{ die 7 if $_ == 7; print $_,"\n"; } or do{ next; }; }
aspnstyle+2008-03-20 16:20:39--könntest du mir das anhand dem bsp kurz erklären ... versteh das noch nicht ganz wieso man nicht einfach eine if abfrage machen kann ob das formfield vorhanden ist und wenn nicht $word->Quit; und mit dem nächsten weiter machen....
aspnstyle+2008-03-20 16:20:39--eval - Mit Hilfe der eval-Funktion können Sie jedoch den Perl-Interpreter während der Laufzeit eines Scripts aufrufen und innerhalb des Scripts beliebigen Perl-Code interpretieren lassen. [...]
Quote[...] versteh das noch nicht ganz wieso man nicht einfach eine if abfrage machen kann ob das formfield vorhanden ist und wenn nicht $word->Quit; und mit dem nächsten weiter machen [...]
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl use strict; use warnings; for(0..9) { #Schleifenanfang eval{ #eval Funktion die 7 if $_ == 7; # ??? print $_,"\n"; # Ausgabe der std. Variable $_ } or do{ next; }; # ok redo,last,next kenn ich ja seit gestern :) }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
use strict; use warnings; use Win32::OLE; use File::Spec::Functions qw/catfile/; my $dir_path = $ARGV[0] or die "No directory argument given\n"; { open my $dir, $dir_path or die "Couldn't open $dir_path: $!\n"; # We only have to launch Word once before the loop and can keep it open # to improve performance... my $word = Win32::OLE->new('Word.Application', 'Quit') or die "Couldn't launch Word: " . Win32::OLE->LastError . "\n"; $word->{Visible} = $debug; while (my $file_name = readdir $dir) { next unless ($file_name =~ /\.doc$/i); my $file_path = catfile($dir_path, $file_name); if (my $document = $word->Documents->Open($file_path)) { eval { my $text1 = $document->FormFields('Text1')->Result; my $text18 = $document->FormFields('Text18')->Result; my $text20 = $document->FormFields('Text20')->Result; print "File($file_path) {\n text1: $text1,\n text18: $text18,\n text20: $text20\n}\n" }; warn "Error processing $file_name: $@\n" if ($@); $document->Close(); } else { warn "Couldn't open $file_name: " . Win32::OLE->LastError . "\n"; } } # Neither $dir nor $word have to be closed explicitly as they are both local objects whose # refcount drops to zero here and their destructors will close them as desired. }
murphy+2008-03-20 20:53:57--Ferner würde ich in der Regel lieber nicht eval { ... } or ...; schreiben, da das lediglich den Rückgabewert von eval überprüft, der auch dann falsch sein kann, wenn kein Fehler auftrat, sondern die letzte Anweisung im Block 0 oder undef zurückgegeben hat. Sicherer ist es, direkt $@ zu überprüfen.
|< 1 2 >| | 12 Einträge, 2 Seiten |