Schrift
[thread]8356[/thread]

einzelne Woerter entfernen: nicht ganze zeilen (Seite 2)



<< |< 1 2 3 4 5 6 >| >> 54 Einträge, 6 Seiten
sabrina
 2006-09-25 18:23
#70180 #70180
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@renee hab mit meinem ursprungscode das MFG wegbekommen.
jetzt hab ich nur noch das problem das ich diese fehlermeldungen in der ausgabe habe.
Code: (dl )
1
2
use of uninitialized value in join or string at C:\bla\bla.pl line 19.
use of uninitialized value in join or string at C:\bla\bla.pl line 22.
beziehen sich darauf, wo die
Code: (dl )
1
2
print join (";",@$_),"\n"for(@lines); #line 19
print $w_fh join (";",@$_),"\n"for(@lines); #line 22

stehen hab ich was falsches getippt? lg sabrina
ps fehleranzeigen gibt es so eigendlich keine.
docsnyder
 2006-09-25 18:26
#70181 #70181
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@sabrina

Nochmal: Du brauchst split() und join() nicht, denn Du kannst einen RegEx direkt auf eine ganze Zeile anwenden. Und da Dein Fehler beim join() ist, wär der auch gleich weg ;o)

lg, Doc
sabrina
 2006-09-25 18:33
#70182 #70182
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@doc
aber ich brauch doch das join wegen den ";" oder kann ich die auch anders zwischen die einzelnen daten als trenner setzen.
docsnyder
 2006-09-25 18:35
#70183 #70183
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@sabrina

Du hattest doch in der Eingabe-Datei ";"-Trenner drin, und wenn Du garnicht erst splittest, dann bleiben die natürlich drin ;o)

Gruß, Doc\n\n

<!--EDIT|docsnyder|1159194973-->
sabrina
 2006-09-25 18:38
#70184 #70184
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@doc
ne die waren nicht drin! urspruenglich war alles mit leerstellen getrennt und zwar unbestimmt viele!desshalb hab ich ja gesplittet.
lg sabrina
docsnyder
 2006-09-25 18:43
#70185 #70185
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@sabrina

O.K., dann brauchst Du nur "statt"

Code: (dl )
split(/[\s]+/, $line);


den RegEx

Code: (dl )
$line =~ s/\s+/;/g;


auszuführen. Denn, ob Du bei "\s+" splittest und später wieder mit einem ";" als Trenner joinst, oder "\s+" gleich durch ";" ersetzt, bleibt sich gleich.

Gruß, Doc\n\n

<!--EDIT|docsnyder|1159195475-->
sabrina
 2006-09-25 18:54
#70186 #70186
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
hab jetzt also sowas da stehen wenn ich alles richtig verstanden habe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
while (my $line = <$fh>){
chomp $line;
$line =~s/\s+/;/g;
push(@lines, line =~s:\b(MFG|DOME/GT|OG)\b::go);
}
print @lines;
close $fh or die $!;
open(my $w_fh,'>',$fest or die $!;
print $w_fh @lines;
close $w_fh or die $!;

stimmt vielleicht mein print doch nicht? und fuer was steht go ich kenne nur goto!

edit das plus sorg dafuer das egal wieviele leerzeichen da stehen es nur ein ";"gibt!?\n\n

<!--EDIT|sabrina|1159196206-->
docsnyder
 2006-09-25 19:02
#70187 #70187
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@sabrina

Versuch's mal damit (denn mein drittes Beispiel klappt so nicht, wie ich es gepostet hatte):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
while (my $line = <$fh>){
chomp $line;
$line =~ s/\s+/;/g;
$line =~ s:\b(MFG|DOME/GT|OG)\b::go;
push(@lines, $line);
}
print @lines;
close $fh or die $!;
open(my $w_fh, '>', $fest) or die $!;
print $w_fh @lines;
close $w_fh or die $!;


Das "go" ist ein "g" und ein "o". Gas "g" kennst Du, und das "o" sagt Perl, daß es den RegEx nur einmal kompilieren soll, anstatt bei jedem Schleifendurchlauf. Das spart Zeit und macht Sinn, weil sich Dein RegEx ja nicht verändert.

Gruß, Doc\n\n

<!--EDIT|docsnyder|1159197402-->
sabrina
 2006-09-25 19:17
#70188 #70188
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@doc
also hab es gerade abgetippt aber so geht das nicht er meckert in der zeile wo die drei woerter stehen und zwar sagt er folgendes:
Code: (dl )
1
2
3
4
5
6
Bareword found where operator expected at datei.pl line 13, near "$line =~s\b ...usw
(Might be a runaway multi-line//string starting on line 12)   ##die mit dem ";"ersetzten
(Missing Operator before GT?)
Backslash found where operator expected at datei.pl line 13,near ")\"
(Missing operator before\?)
syntax error at datei.pl line 13,near "$line =~s\b...usw

so mach jetzt fuer heute feierabend vielleicht kommt ja heute nacht im schlaf die erleuchtung
dane fuer deine hielfe doc
lg sabrina
docsnyder
 2006-09-25 19:25
#70189 #70189
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@sabrina

Quote
Bareword found where operator expected at datei.pl line 13, near "$line =~s\b ...usw


In der Fehlermeldung steht "...=~s\b...". Du hast wahrscheinlich beim Abtippen zwischen "s" und "\" einen Doppelpunkt vergessen ("...=~s:\b...").

lg, Doc
<< |< 1 2 3 4 5 6 >| >> 54 Einträge, 6 Seiten



View all threads created 2006-09-25 13:22.