Schrift
[thread]8282[/thread]

Win32::OLE auf dem pc gesucht: kann zwar modul finden gibt aber mehrere (Seite 3)



<< |< 1 2 3 4 5 6 ... 10 >| >> 93 Einträge, 10 Seiten
GwenDragon
 2006-09-08 14:04
#69360 #69360
User since
2005-01-17
14848 Artikel
Admin1
[Homepage]
user image
[quote=sabrina,08.09.2006, 10:11]Ah und bevor ich es vergesse, hab noch ne frage und zwar:
Code: (dl )
1
2
3
4
 foreach (@array) {
     s/^\s+/;/g;                        
     s/\s+$/;/g;                    
 } # foreach

steht daoch dafuer das alle anfuehrenden und abschliessenden blanks entfernt werden und durch ; ersetzt werden aber es wird nichts ersetzt, komisch?[/quote]
Da hast du Recht.
Das Array wird ja auch nur nach $_ ausgelesen und dessen Werte werden von Whitespaces am Anfang und Ende befreit und durch ; ersetzt.
Es wird ja nichts ins Array zurückgeschreiben.

Wenn im Array die Werte verändert werden sollen, dann eher so:
Code: (dl )
1
2
3
4
for (my $i=0; $i<@array; $i++) {
$array[$i] =~ s/^\s+/;/g;    
$array[$i] =~ s/\s+$/;/g;                             
}
pq
 2006-09-08 15:39
#69361 #69361
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=GwenDragon,08.09.2006, 12:04]Da hast du Recht.
Das Array wird ja auch nur nach $_ ausgelesen und dessen Werte werden von Whitespaces am Anfang und Ende befreit und durch ; ersetzt.
Es wird ja nichts ins Array zurückgeschreiben.[/quote]
doch, das array wird verändert. $_ ist ja ein alias auf den richtigen wert:
Code: (dl )
1
2
3
4
5
6
7
8
$ perl -wle '@a = qw(AA BB CC);
for (@a) {
s/.//;
}
print for @a'
A
B
C
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
sabrina
 2006-09-08 15:46
#69362 #69362
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
hallo GwenDragon,
danke erst mal!
Habe es grade mit deinem code stueck probiert aber es geht nicht wie gewuenscht, ich denke ich schick mal meine komplette while schleife, denn so wie ich das sehe wird ein stueck darunter etwas in mein array uebergeben oder ?
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
while(my $line = <FH>) {       
chomp $line;
my @array = (split(/[\t\s\\]/,$line))[0..($columns-1)]; 
foreach (@array) {
s/^\s+/;/g;
s/\s+$/;/g;
} # foreach
if ($line =~ /\b(?:BLUBB|BLUBBER)\b/){
push @data,[@array];
}
} # while

wenn ich schon beim fragen bin, abgesehen von meinem problem mit der trennung " ; "habe ich wie oben schon erwaehnt, meistens nicht das problem welche syntax ich brauch, sondern was ich mit ihr mache und so meine naechtse frage bei meinem regex
Code: (dl )
1
2
if ($line =~ /\b(?:BLUBB|BLUBBER)\b/){  
 push @data,[@array];  

das bedeutet ja wenn ein BLUBB oder BLUBBER in der line steht dan haeng die line nacheinander in @data, jetzt habe ich in einer line zwar BLUBB stehen aber an der falschen stelle und es steht noch was anderes da und zwar SAND kleines beispiel( bla bla SAND BLUBBER), normal wuerde ich doch mit Caret ^ als negation arbeiten ?
hab es schon auf zwei arten probiert einmal so:
Code (perl): (dl )
1
2
3
4
5
6
if ($line =~ /\b(?:BLUBB|BLUBBER)\b/){  
  push @data,[@array];                   
  }
  if ($line =~ /\b(?:[^SAND]\b/){
  push @data,[@array];
  }

hier die fehlermeldung:

Unmatched ( in regex; marked by <-- HERE in m/\b( <-- HERE [^SAND]\b/ at 5_09_neu.pl line 22

und einmal so:

Code (perl): (dl )
1
2
3
if ($line =~ /\b(?:BLUBB|BLUBBER|[^SAND])\b/){     
  push @data,[@array];       
  }

bekomm jetzt keine fehlermeldung aber es wird jetzt keine linien mehr rausgeschmissen, hab jetzt also alle drinn, ungefiltert.
lg sabrina
vayu
 2006-09-08 16:02
#69363 #69363
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Quote

Unmatched ( in regex; marked by <-- HERE in m/\b( <-- HERE [^SAND]\b/ at 5_09_neu.pl line 22


sagt einfach nur, dass du beim SAND vergessen hast die runde Klammer zu schliessen :p
sabrina
 2006-09-08 16:34
#69364 #69364
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
danke!
wie heistes doch so schoen:
Ich seh vor lauter Wald den Baum nicht mehr
:blush:
habs geaendert
Code: (dl )
1
2
3
if ($line =~ /[\b^SAND\b]/){
push @data,[@array];
}

Fehlermeldung ist weg aber meine ausgabe ist wieder ungefiltert,also waren wohl meine beiden ansaetze falsch, ich dacht jetzt haette ich das grundsystem geschnallt.
irgendwo hab ich nen dauerhaften denkfehler mit perl, kann den vielleicht jemand loesen?
lg sabrina
Crian
 2006-09-08 16:37
#69365 #69365
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
@Gwen: Doch. Das ist ja gerade eine der mächtigen Sachen bei Perl. Da wird nicht kopiert, sondern auf die Stelle verwieden. Deshalb muss man auch bei Sachen wie map aufpassen, dass man nicht unbeabsichtigt das Originalarray ändert =)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2006-09-08 17:08
#69366 #69366
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
if ($line =~ /[\b^SAND\b]/){
push @data,[@array];
}


Welche Daten willst Du damit filtern??
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
sabrina
 2006-09-08 17:27
#69367 #69367
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
Eigendlich daten die so aussehen:
Nachname Vorname Domain Benutzername Size

und in Domain steht manch mal BLUBB, BLUBBER und andere daten drin
und in einer zeile steht
Sabrina Gehring SAND BLUBB
und das ist falsch
die daten geben zwar nur noch BLUBB und BLUBBER aus aber auch die eine falsche zeile kann man da was machen?

schoenes wochenende
lg sabrina
renee
 2006-09-08 17:34
#69368 #69368
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann solltest Du das so schreiben:
Code: (dl )
1
2
3
if ($line !~ /\bSAND\b/){
push @data,[@array];
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
sabrina
 2006-09-11 10:26
#69369 #69369
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
Guten Morgen,
@renee hab es gerade getestet, mit folgendem code:
Code: (dl )
1
2
3
4
5
6
if ($line =~ /\b(?:BLUBB|BLUBBER)\b/){  
push @data,[@array];                  
}
if ($line !~ /\bSAND\b/){
push @data,[@array];
}

aber wie bei den anderen code teilen die ich schon probiert habe bekomme ich keine Fehlermeldung, aber dafuer eine nicht gematchte liste zurueck #heul# #schnief#
lg sabrina
<< |< 1 2 3 4 5 6 ... 10 >| >> 93 Einträge, 10 Seiten



View all threads created 2006-08-30 11:40.