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

suchen und löschen im array (Seite 2)

Leser: 1


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
bieber
 2007-06-20 12:36
#77629 #77629
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
funktioniert in der tat,danke

aber wieso geht meine Version nicht?!

hab sogar nochmal in nem Perlbuch nachgeschaut, da haben sie das auch so geschrieben wie ich, nur das Trennzeichen war ein ":"
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
vayu
 2007-06-20 13:09
#77630 #77630
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
@Opi pack ihn doch in deine Signatur :P
renee
 2007-06-20 13:18
#77631 #77631
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn man sich die <!--pod_f1--><a href="//perldoc.perl.org/functions/split.html" target="_blank"><img alt="perldoc " src="/iB_html/non-cgi/Skin/SKIN-3/images/perldoc.gif" border="0"> <!--pod_f2-->perldoc zu split<!--pod_f3--></a><!--pod_f4--> anschaut, dann sieht man, dass der erste Parameter ein regulärer Ausdruck ist. Dein split "." entspricht als eigentlich dem split /./. Und der Punkt steht in Regulären Ausdrücken für ein "beliebiges Zeichen". Und bei split werden die Trennzeichen nicht behalten, außer man sagt es explizit durch Klammerung. Was bei Deinem Ausdruck passiert, wird also deutlich wenn Du folgendes machst:
Code (perl): (dl )
1
2
3
4
use Data::Dumper;

my @array  = split "(.)" , $work[3];
print Dumper \@array;


Um an einem literalen Punkt, also dem Zeichen '.' zu splitten, musst Du das im Regulären Ausdruck escapen. Deswegen das \. Damit das ganze Übersichtlicher wird, packen wir das gleich in //. So erkennt man auch gleich, dass es sich um einen Regulären Ausdruck handelt.

Wenn Du es mit der String-Variante machen möchtest, müsstest Du split "\\." , $work[3]; schreiben.
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/
Taulmarill
 2007-06-20 13:21
#77632 #77632
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Das erste Argument für split wird immer als Regulärer Ausdruck interpretiert, auch wenn nur ein String übergeben wird. Und der Punkt hat nun einmal in Regulären Ausdrücken eine besondere Bedeutung (entspricht einem beliebigen Zeichen), der Doppelpunkt meines Wissens nicht.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
renee
 2007-06-20 13:22
#77633 #77633
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das es mit ":" funktioniert ist dadurch zu erklären, dass das : in Regulären Ausdrücken keine Sonderbedeutung hat!

Ich finde es etwas unglücklich, dass in den Büchern die Schreibweise mit "" verwendet wird...

Eine Ausnahme, in der es ganz nützlich ist, ist split " ",$wert. Da hier - im Gegensatz zu split / /,$wert - die führenden und angehängten Leerzeichen gleich mit entfernt werden.

Aber in der Regel ist die Verwendung von // besser.
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/
bieber
 2007-06-20 14:11
#77634 #77634
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
okay danke, habs kapiert ;)
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2007-06-18 18:03.