Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12165[/thread]

Text von Entry

Leser: 1


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Gast Gast
 2008-07-11 17:14
#112022 #112022
Hallo,
ich arbeite momentan mit perl 5.8.1
Irgendwo wird einen Text mit einem Entry abgefragt, das auch besondere Zeichen enthalten kann, wie "( usw.
Wenn ich mir den Text ausgeben lasse, kommt der String so, wie es eingegeben wurde. Z.B. "(Beispiel)"
Der Text muss mit einem Text verglichen werden, der sich in einer Datei befindet. Es wird abgefragt, ob der Text aus der Entry in der Zeilen der Datei vorkommt, oder einer Zeile gleich ist.
Obwohl beide Texte gleich sind, kommt bei
Code: (dl )
if($_ =~ $str1 || $_ eq $str1)

immer false raus...

Wenn ich anstatt den Text aus dem Entry zu holen es im Programm schreibe... mit '...', klappt das allerdings.
Was soll ich mit dem Text der Entry machen?
KurtZ
 2008-07-11 17:51
#112025 #112025
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
chomp?

also ich verstehe gerade nur Bahnhof, aber "text aus datei" lässt mein chomp-Neuron feuern!
TMTOWTDYOG (there's more than one way to dig your own grave)
GwenDragon
 2008-07-11 18:02
#112026 #112026
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Ja, was denn nun? Ein Vergleich mit Regex oder einer als Stringvergleich?
Wenn beides, soltest du besser $str1 beim Match als Regex quoten.
Gast Gast
 2008-07-11 18:23
#112027 #112027
Gast+2008-07-11 15:14:34--
Hallo,
ich arbeite momentan mit perl 5.8.1
Irgendwo wird einen Text mit einem Entry abgefragt, das auch besondere Zeichen enthalten kann, wie "( usw.
Wenn ich mir den Text ausgeben lasse, kommt der String so, wie es eingegeben wurde. Z.B. "(Beispiel)"
Der Text muss mit einem Text verglichen werden, der sich in einer Datei befindet. Es wird abgefragt, ob der Text aus der Entry in der Zeilen der Datei vorkommt, oder einer Zeile gleich ist.
Obwohl beide Texte gleich sind, kommt bei
Code: (dl )
if($_ =~ $str1 || $_ eq $str1)

immer false raus...

Wenn ich anstatt den Text aus dem Entry zu holen es im Programm schreibe... mit '...', klappt das allerdings.
Was soll ich mit dem Text der Entry machen?


Was steht denn in $_ und in $str1 drin? Hast du dir das mal ausgeben lassen?
Du kannst dazu das Modul Data::Dumper sehr schön verwenden:
Code: (dl )
1
2
3
4
5
6
7
8
use Data::Dumper qw/Dumper/;

print "meine Strings vor dem Vergleich: \n";
print Dumper $_;
print Dumper $str1;

if( $_ =~ m/$str1/ ) {
}
Gast Gast
 2008-07-14 15:45
#112098 #112098
Hallo,
hier der Befehl und die Ausgabe:
Code: (dl )
1
2
print "\nvergleich: $_, str1: $str1.";
if($_ =~ $str1){...}

...
vergleich: user_pref("mail.server.server1.type", "pop3");
, str1: user_pref("mail.server.server1.type", "pop3");.
...
man sieht dass $str1 kein Leerzeichen am Ende hat.

Allerdings hat $_ ein Leerzeichen am Ende, da es aber abgefragt wird ob er $str1 beinhaltet, sollte das kein Problem sein, oder?

auch mit chomp() beiderseits funktioniert es nicht...
Gast Gast
 2008-07-14 15:50
#112099 #112099
Nebenbei chomp auf $_ entfehrnt den Zeilenumbruch nicht, wahrscheinlich weil es kein \n ist. Sollte aber wie gesagt egal sein.
KurtZ
 2008-07-14 15:54
#112100 #112100
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Gast+2008-07-14 13:45:33--
Code: (dl )
1
2
print "\nvergleich: $_, str1: $str1.";
if($_ =~ $str1){...}


???

RATEVERSUCHE
Code (perl): (dl )
        if($_ =~ /\Q$str1\E/){...}


Code (perl): (dl )
        if($_  eq $str1){...}


NACHTRAG: und benutz mal den Data::Dumper Code den "der andere Gast" geschrieben hat.
TMTOWTDYOG (there's more than one way to dig your own grave)
Gast Gast
 2008-07-14 16:01
#112101 #112101
Ja hatte einiges vergessen :), danke
KurtZ
 2008-07-14 16:43
#112102 #112102
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
und was?
TMTOWTDYOG (there's more than one way to dig your own grave)
Gast Gast
 2008-07-14 17:27
#112105 #112105
[quote="KurtZ+2008-07-14 13:54:50--"]
Gast+2008-07-14 13:45:33--
if($_ =~ /\Q$str1\E/){...}[/perl]


Das hat geholfen. Den Dumper konnte ich nicht benutzen, da ich mit einer älteren Version von Perl arbeiten muss. Nochmal danke.
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2008-07-11 17:14.