Thread Stringvergleich geht nicht..
(18 answers)
Opened by introdev at 2019-10-07 17:36 Quote Nein, es kommt darauf an zu verstehen was chomp macht: Es entfernt genau die bzw das Zeichen was in $/ voreingestellt ist. Hierzu die Demo: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 my $s = "A\r\n"; say "@{[map{sprintf '%02X', $_} unpack 'C*', $s]}"; # 41 0D 0A say chomp $s; # 1 say "@{[map{sprintf '%02X', $_} unpack 'C*', $s]}"; # 41 0D # ändere die Voreinstellung für $/ $/ = "\r\n"; $s = "B\r\n"; say chomp $s; # 2 say "@{[map{sprintf '%02X', $_} unpack 'C*', $s]}"; # 42 Während also beim ersten chomp nur ein Zeichen, nämlich das Newline "\n" entfernt wird, was der Voreinstellung auf meinem System entspricht, entfernt chomp beim zweiten Text beide Zeichen "\r\n". Tipp: Nutze die Möglichkeit des dynamischen Scope: Code (perl): (dl
)
1 2 3 4 5 6 # benutzerdefinierte Einstellung # für $/ in dynamischen Scope do{ local $/ = "\r\n"; #... }; Das ist eine Besonderheit von Perl was nicht jede Programmiersprache bietet . PS: Noch einfacher MFG Last edited: 2019-10-13 12:00:09 +0200 (CEST) |