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

s/// vs. y/// Unterschied?



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
pktm
 2005-11-14 21:29
#60153 #60153
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Warin besteht der Unterschied zwischen s/// und y///?
So ganz habe ich das das noch nicht realisiert.

Grüße, Alex
http://www.intergastro-service.de (mein erstes CMS :) )
pq
 2005-11-14 21:39
#60154 #60154
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
s/// substituiert reguläre ausdrücke, tr/// bzw. y/// nur einzelne zeichen.
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
Optalamia
 2005-11-15 15:58
#60155 #60155
User since
2003-10-01
50 Artikel
BenutzerIn
[Homepage] [default_avatar]
Beispiel:

y/aou/äöü/
ersetzt alle a durch ä, alle o durch ö und alle u durch ü

Ist z.B. praktisch bei Anpassung zwischen ANSI und ASCII-Datensatz.
Also wenn man Texte auf der Windows-Kommandozeile ausgeben will.
Denn da werden "Sonderzeichen" anders ausgegeben als gewollt.
Um eine ordentliche Anzeige zu haben, habe ich eine Funktion zum Ersetzen geschrieben.
(vielleicht habe ich das Rad auch neu erfunden :o)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sub ansi2ascii {
$_ = $_[0];
y/Ä/´/; # unvollständig
y/Ü/¨/;
y/ß/á/;
y/è/¦/;
y/È/Ô/;
y/Ê/Ò/;
y/Í/Ö/;
y/Ì/Þ/;
y/Î/×/;
y/í/¡/;
y/Ó/à/;
y/Ò/ã/;
y/Ô/â/;
y/Ú/é/;
y/Ù/ë/;
y/Û/ê/;
y/ú/£/;
y/õ/ä/;

return $_;
}


Dies ist lang, aber übersichtlich.
Könnte man auch so schreiben:

Code: (dl )
  y/ÄÜÔ/´¨â/;     # hier nur 3 Zeichen ersetzt



ACHTUNG, hier im Forum lassen sich viele Zeichen nicht anzeigen, deshalt hier eine Kopie:
http://beauty.online.de/pub/ansi2ascii.pl.txt
Oder per mail zuschicken lassen: beautyod(ät)gmx.de

Forum-Schlüsselwörter: ANSI ASCII OEM Zeichensatz DOS Kommandozeile
Strat
 2005-11-15 17:20
#60156 #60156
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Optalamia: fuer sowas gibt es ein wunderschoenes perl-modul namens Encode ...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pktm
 2005-11-15 22:35
#60157 #60157
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Aha. Danke.
Wie ist das wenn man y/[äüö]/[auo]/ angibt, ändert das etwas? Meines Wissens nicht, aber im Perl-Kurs den ich besuche wurden die [] angegeben.
http://www.intergastro-service.de (mein erstes CMS :) )
J-jayz-Z
 2005-11-16 00:15
#60158 #60158
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Macht keinen Unterschied. Aber s/// und y///(oder tr///) unter einen Hut zu werfen ist nicht grad sehr toll. s/// sind waschechte regex, tr/// und y/// sind keine regex...
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
betterworld
 2005-11-16 00:52
#60159 #60159
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=pktm,15.11.2005, 21:35]Aha. Danke.
Wie ist das wenn man y/[äüö]/[auo]/ angibt, ändert das etwas? Meines Wissens nicht, aber im Perl-Kurs den ich besuche wurden die [] angegeben.[/quote]
Versuch/Überleg mal, was passiert, wenn Du
Code: (dl )
y/[äüö]/]auo[/ 
machst. Dann wirst Du schnell dahinterkommen, warum
Code: (dl )
y/[äüö]/[auo]/ 
nicht wirklich etwas anderes ist als
Code: (dl )
y/äüö/auo/ 
pKai
 2005-11-16 10:43
#60160 #60160
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
oder
Code: (dl )
y[äöü][aou]
I sense a soul in search of answers.
Strat
 2005-11-16 18:00
#60161 #60161
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
aus gruenden der lesbarkeit empfehle ich tr zu verwenden; y ist nur noch vorhanden, damit es sed-umsteigern bekannter vorkommt...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2005-11-17 16:49
#60162 #60162
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[scherz]Naja, aber Du weißt schon, dass die Einsparungen durch y gegenüber tr im Zeitalter von Terrabyte großen Festplatten eine enorm wichtige Rolle spielen .... [/scherz]

Ok im ernst... ich benutze auch meistens tr, aber y finde ich auch ganz schön.
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
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2005-11-14 21:29.